From db23aaad8366f04bbecf4daf2be7acfc9bd5a5b2 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 9 Jun 2020 15:22:37 -0600 Subject: [PATCH 1/4] Destroy old CommunityFilterConditions when they aren't needed Fixes https://github.com/vector-im/riot-web/issues/13971 --- src/stores/room-list/TagWatcher.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/stores/room-list/TagWatcher.ts b/src/stores/room-list/TagWatcher.ts index 1fb5223e00..22302b695d 100644 --- a/src/stores/room-list/TagWatcher.ts +++ b/src/stores/room-list/TagWatcher.ts @@ -74,6 +74,11 @@ export class TagWatcher { this.store.removeFilter(filter); } + // Destroy any and all old filter conditions to prevent resource leaks + for (const filter of this.filters.values()) { + filter.destroy(); + } + this.filters = newFilters; } }; From fed52f274e796fc28586ee49614b51fd0128df25 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 9 Jun 2020 15:23:34 -0600 Subject: [PATCH 2/4] Fix custom theme use with new room list Fixes https://github.com/vector-im/riot-web/issues/13968 We were grabbing "custom-" instead of the actual theme name. --- src/components/structures/UserMenuButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/UserMenuButton.tsx b/src/components/structures/UserMenuButton.tsx index d8f96d4a91..5fbab796a6 100644 --- a/src/components/structures/UserMenuButton.tsx +++ b/src/components/structures/UserMenuButton.tsx @@ -80,7 +80,7 @@ export default class UserMenuButton extends React.Component { private isUserOnDarkTheme(): boolean { const theme = SettingsStore.getValue("theme"); if (theme.startsWith("custom-")) { - return getCustomTheme(theme.substring(0, 7)).is_dark; + return getCustomTheme(theme.substring("custom-".length)).is_dark; } return theme === "dark"; } From c3608006314eba7defd1c27b0a550c2eb15ad3f6 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 9 Jun 2020 15:26:13 -0600 Subject: [PATCH 3/4] Add token.remove() handling to room list temp proxy Fixes https://github.com/vector-im/riot-web/issues/13930 --- .../room-list/RoomListStoreTempProxy.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/stores/room-list/RoomListStoreTempProxy.ts b/src/stores/room-list/RoomListStoreTempProxy.ts index 0268cf0a46..13129f4bdb 100644 --- a/src/stores/room-list/RoomListStoreTempProxy.ts +++ b/src/stores/room-list/RoomListStoreTempProxy.ts @@ -31,11 +31,14 @@ export class RoomListStoreTempProxy { return SettingsStore.isFeatureEnabled("feature_new_room_list"); } - public static addListener(handler: () => void) { + public static addListener(handler: () => void): RoomListStoreTempToken { if (RoomListStoreTempProxy.isUsingNewStore()) { - return RoomListStore.instance.on(UPDATE_EVENT, handler); + const offFn = () => RoomListStore.instance.off(UPDATE_EVENT, handler); + RoomListStore.instance.on(UPDATE_EVENT, handler); + return new RoomListStoreTempToken(offFn); } else { - return OldRoomListStore.addListener(handler); + const token = OldRoomListStore.addListener(handler); + return new RoomListStoreTempToken(() => token.remove()); } } @@ -47,3 +50,13 @@ export class RoomListStoreTempProxy { } } } + + +export class RoomListStoreTempToken { + constructor(private offFn: () => void) { + } + + public remove(): void { + this.offFn(); + } +} From 84174cc44061d713c9fafad100790249a9a4b574 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 9 Jun 2020 15:30:03 -0600 Subject: [PATCH 4/4] Remove 1 extra line --- src/stores/room-list/RoomListStoreTempProxy.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/stores/room-list/RoomListStoreTempProxy.ts b/src/stores/room-list/RoomListStoreTempProxy.ts index 13129f4bdb..0a173d53a9 100644 --- a/src/stores/room-list/RoomListStoreTempProxy.ts +++ b/src/stores/room-list/RoomListStoreTempProxy.ts @@ -51,7 +51,6 @@ export class RoomListStoreTempProxy { } } - export class RoomListStoreTempToken { constructor(private offFn: () => void) { }