From fc40f03afa3382f712bf6e826391930838e463bc Mon Sep 17 00:00:00 2001 From: su-ex Date: Sun, 26 May 2024 10:43:36 +0200 Subject: Bring back showSpaceDMBadges setting, force-enabled for now TODO settings UI Co-authored-by: SpiritCroc --- src/settings/Settings.tsx | 5 +++++ src/stores/spaces/SpaceStore.ts | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 2e475871fa..43eb44fa3a 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -199,6 +199,11 @@ export const SETTINGS: { [setting: string]: ISetting } = { default: true, controller: new ReloadOnChangeController(), }, + "Spaces.showSpaceDMBadges": { + displayName: _td("Show notification badges for People in Spaces"), + supportedLevels: LEVELS_ACCOUNT_SETTINGS, + default: true, + }, // SC settings end "feature_video_rooms": { isFeature: true, diff --git a/src/stores/spaces/SpaceStore.ts b/src/stores/spaces/SpaceStore.ts index 90358f3310..60df05478a 100644 --- a/src/stores/spaces/SpaceStore.ts +++ b/src/stores/spaces/SpaceStore.ts @@ -154,9 +154,17 @@ export class SpaceStoreClass extends AsyncStoreWithClient { /** Whether the feature flag is set for MSC3946 */ private _msc3946ProcessDynamicPredecessor: boolean = SettingsStore.getValue("feature_dynamic_room_predecessors"); + // SC start + private _showSpaceDMBadges = true; + // SC end + public constructor() { super(defaultDispatcher, {}); + // SC start + SettingsStore.monitorSetting("Spaces.showSpaceDMBadges", null); + // SC end + SettingsStore.monitorSetting("Spaces.allRoomsInHome", null); SettingsStore.monitorSetting("Spaces.enabledMetaSpaces", null); SettingsStore.monitorSetting("Spaces.showPeopleInSpace", null); @@ -192,6 +200,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient { return this._allRoomsInHome; } + public get showSpaceDMBadges(): boolean { // SC + return this._showSpaceDMBadges; + } + public setActiveRoomInSpace(space: SpaceKey): void { if (!isMetaSpace(space) && !this.matrixClient?.getRoom(space)?.isSpaceRoom()) return; if (space !== this.activeSpace) this.setActiveSpace(space, false); @@ -701,6 +713,10 @@ export class SpaceStoreClass extends AsyncStoreWithClient { if (room.isSpaceRoom() || !flattenedRoomsForSpace.has(room.roomId)) return false; + if (this.showSpaceDMBadges) { // SC + return true; + } + if (dmBadgeSpace && DMRoomMap.shared().getUserIdForRoomId(room.roomId)) { return s === dmBadgeSpace; } @@ -1277,6 +1293,15 @@ export class SpaceStoreClass extends AsyncStoreWithClient { break; } + case "Spaces.showSpaceDMBadges": { // SC + const newValue = SettingsStore.getValue("Spaces.showSpaceDMBadges"); + if (this.showSpaceDMBadges !== newValue) { + this._showSpaceDMBadges = newValue; + this.rebuildSpaceHierarchy(); // rebuild everything + } + break; + } + case "Spaces.enabledMetaSpaces": { const newValue = SettingsStore.getValue("Spaces.enabledMetaSpaces"); const enabledMetaSpaces = metaSpaceOrder.filter((k) => newValue[k]); -- 2.47.0