diff --git a/src/stores/WidgetStore.ts b/src/stores/WidgetStore.ts index f1b5ea9be0..c9cf0a1c70 100644 --- a/src/stores/WidgetStore.ts +++ b/src/stores/WidgetStore.ts @@ -134,6 +134,7 @@ export default class WidgetStore extends AsyncStoreWithClient { // first clean out old widgets from the map which originate from this room // otherwise we are out of sync with the rest of the app with stale widget events during removal Array.from(this.widgetMap.values()).forEach(app => { + if (app.roomId !== room.roomId) return; // skip - wrong room this.widgetMap.delete(widgetUid(app)); }); @@ -233,7 +234,7 @@ export default class WidgetStore extends AsyncStoreWithClient { // Clean up the pinned record Object.keys(roomInfo).forEach(wId => { - if (!roomInfo.widgets.some(w => w.id === wId)) { + if (!roomInfo.widgets.some(w => w.id === wId) || !roomInfo.pinned[wId]) { delete roomInfo.pinned[wId]; } });