diff --git a/src/viewmodels/ChatterboxViewModel.ts b/src/viewmodels/ChatterboxViewModel.ts index 04d6b363872ade27d7dc821a1d7ce3515ae7ffe1..92f88265000decb75366ec31ec3844512e9e6aaa 100644 --- a/src/viewmodels/ChatterboxViewModel.ts +++ b/src/viewmodels/ChatterboxViewModel.ts @@ -1,4 +1,4 @@ -import { RoomViewModel, ViewModel, ComposerViewModel} from "hydrogen-view-sdk"; +import { RoomViewModel, ViewModel, ComposerViewModel, RoomStatus} from "hydrogen-view-sdk"; export class ChatterboxViewModel extends ViewModel { private _messageComposerViewModel?: typeof ComposerViewModel; @@ -52,13 +52,10 @@ export class ChatterboxViewModel extends ViewModel { avatar: undefined, invites: [userId], }); - await this._waitForRoomCreation(roomBeingCreated); + const roomStatusObservable = await this._session.observeRoomStatus(roomBeingCreated.id); + await roomStatusObservable.waitFor(status => status === (RoomStatus.BeingCreated | RoomStatus.Replaced)).promise; const roomId = roomBeingCreated.roomId; room = this._session.rooms.get(roomId); - if (!room) { - await this._waitForRoomFromSync(roomId); - room = this._session.rooms.get(roomId); - } return room; } @@ -76,6 +73,7 @@ export class ChatterboxViewModel extends ViewModel { } private _waitForRoomFromSync(roomId: string): Promise<void> { + console.log("waiting for room from sync"); let resolve: () => void; const promise: Promise<void> = new Promise(r => { resolve = r; }) const subscription = { @@ -92,17 +90,6 @@ export class ChatterboxViewModel extends ViewModel { return promise; } - private _waitForRoomCreation(roomBeingCreated): Promise<void> { - let resolve: () => void; - const promise: Promise<void> = new Promise(r => { resolve = r; }) - roomBeingCreated.on("change", () => { - if (roomBeingCreated.roomId) { - resolve(); - } - }); - return promise; - } - get timelineViewModel() { return this._roomViewModel?.timelineViewModel; }