From 3aecb04ede18d88e05609a1917acd9d368d132b5 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 27 Jan 2022 14:05:29 -0700 Subject: [PATCH] Fix left panel widgets causing app-wide crash --- src/components/views/elements/AppTile.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/views/elements/AppTile.tsx b/src/components/views/elements/AppTile.tsx index fbe092c7b5f..8b61d0d7641 100644 --- a/src/components/views/elements/AppTile.tsx +++ b/src/components/views/elements/AppTile.tsx @@ -243,7 +243,11 @@ export default class AppTile extends React.Component { } this.watchUserReady(); - WidgetLayoutStore.instance.on(WidgetLayoutStore.emissionForRoom(this.props.room), this.onWidgetLayoutChange); + if (this.props.room) { + const emitEvent = WidgetLayoutStore.emissionForRoom(this.props.room); + WidgetLayoutStore.instance.on(emitEvent, this.onWidgetLayoutChange); + } + this.roomStoreToken = RoomViewStore.addListener(this.onRoomViewStoreUpdate); this.allowedWidgetsWatchRef = SettingsStore.watchSetting("allowedWidgets", null, this.onAllowedWidgetsChange); // Widget action listeners @@ -254,7 +258,11 @@ export default class AppTile extends React.Component { // Widget action listeners if (this.dispatcherRef) dis.unregister(this.dispatcherRef); - WidgetLayoutStore.instance.off(WidgetLayoutStore.emissionForRoom(this.props.room), this.onWidgetLayoutChange); + if (this.props.room) { + const emitEvent = WidgetLayoutStore.emissionForRoom(this.props.room); + WidgetLayoutStore.instance.off(emitEvent, this.onWidgetLayoutChange); + } + this.roomStoreToken?.remove(); SettingsStore.unwatchSetting(this.allowedWidgetsWatchRef); OwnProfileStore.instance.removeListener(UPDATE_EVENT, this.onUserReady);