Merge pull request #4740 from matrix-org/travis/room-list/stability-1

Improve general stability in the new room list
pull/21833/head
Travis Ralston 2020-06-10 07:40:07 -06:00 committed by GitHub
commit a4ea5b5902
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 4 deletions

View File

@ -80,7 +80,7 @@ export default class UserMenuButton extends React.Component<IProps, IState> {
private isUserOnDarkTheme(): boolean { private isUserOnDarkTheme(): boolean {
const theme = SettingsStore.getValue("theme"); const theme = SettingsStore.getValue("theme");
if (theme.startsWith("custom-")) { if (theme.startsWith("custom-")) {
return getCustomTheme(theme.substring(0, 7)).is_dark; return getCustomTheme(theme.substring("custom-".length)).is_dark;
} }
return theme === "dark"; return theme === "dark";
} }

View File

@ -31,11 +31,14 @@ export class RoomListStoreTempProxy {
return SettingsStore.isFeatureEnabled("feature_new_room_list"); return SettingsStore.isFeatureEnabled("feature_new_room_list");
} }
public static addListener(handler: () => void) { public static addListener(handler: () => void): RoomListStoreTempToken {
if (RoomListStoreTempProxy.isUsingNewStore()) { 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 { } else {
return OldRoomListStore.addListener(handler); const token = OldRoomListStore.addListener(handler);
return new RoomListStoreTempToken(() => token.remove());
} }
} }
@ -47,3 +50,12 @@ export class RoomListStoreTempProxy {
} }
} }
} }
export class RoomListStoreTempToken {
constructor(private offFn: () => void) {
}
public remove(): void {
this.offFn();
}
}

View File

@ -74,6 +74,11 @@ export class TagWatcher {
this.store.removeFilter(filter); 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; this.filters = newFilters;
} }
}; };