From ca7b88c74297aaf33886c8bb82e14c99e1aa2e14 Mon Sep 17 00:00:00 2001 From: RMidhunSuresh <hi@midhun.dev> Date: Thu, 19 May 2022 14:56:34 +0530 Subject: [PATCH] Fix race in watchNotificationCount --- src/viewmodels/ChatterboxViewModel.ts | 1 + src/viewmodels/RootViewModel.ts | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/viewmodels/ChatterboxViewModel.ts b/src/viewmodels/ChatterboxViewModel.ts index af2de40..f225dbc 100644 --- a/src/viewmodels/ChatterboxViewModel.ts +++ b/src/viewmodels/ChatterboxViewModel.ts @@ -55,6 +55,7 @@ export class ChatterboxViewModel extends ViewModel { const roomStatusObservable = await this._session.observeRoomStatus(roomBeingCreated.id); await roomStatusObservable.waitFor(status => status === (RoomStatus.BeingCreated | RoomStatus.Replaced)).promise; const roomId = roomBeingCreated.roomId; + await this.platform.settingsStorage.setString("created-room-id", roomId); room = this._session.rooms.get(roomId); return room; } diff --git a/src/viewmodels/RootViewModel.ts b/src/viewmodels/RootViewModel.ts index 43387c8..2ab96c3 100644 --- a/src/viewmodels/RootViewModel.ts +++ b/src/viewmodels/RootViewModel.ts @@ -1,4 +1,4 @@ -import { ViewModel, Client, Navigation, createRouter, Platform } from "hydrogen-view-sdk"; +import { ViewModel, Client, Navigation, createRouter, Platform, RoomStatus } from "hydrogen-view-sdk"; import { IChatterboxConfig } from "../types/IChatterboxConfig"; import { ChatterboxViewModel } from "./ChatterboxViewModel"; import "hydrogen-view-sdk/style.css"; @@ -99,8 +99,11 @@ export class RootViewModel extends ViewModel { return false; } - private _watchNotificationCount() { - const [room] = this._client.session.rooms.values(); + private async _watchNotificationCount() { + const roomId = await this.platform.settingsStorage.getString("created-room-id") ?? this._config.auto_join_room; + const observable = await this._client.session.observeRoomStatus(roomId); + await observable.waitFor((status) => status === RoomStatus.Joined) .promise; + const room = this._client.session.rooms.get(roomId); let previousCount = room.notificationCount; (window as any).sendNotificationCount(previousCount); const subscription = { -- GitLab