Add token.remove() handling to room list temp proxy

Fixes https://github.com/vector-im/riot-web/issues/13930
pull/21833/head
Travis Ralston 2020-06-09 15:26:13 -06:00
parent fed52f274e
commit c360800631
1 changed files with 16 additions and 3 deletions

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,13 @@ export class RoomListStoreTempProxy {
} }
} }
} }
export class RoomListStoreTempToken {
constructor(private offFn: () => void) {
}
public remove(): void {
this.offFn();
}
}