Skip to content

Commit db8b6fa

Browse files
committed
fix: don't show people filter if disabled in space settings
1 parent 094ede4 commit db8b6fa

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

src/components/viewmodels/roomlist/useFilteredRooms.tsx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ import RoomListStoreV3, {
1414
LISTS_UPDATE_EVENT,
1515
type RoomsResult,
1616
} from "../../../stores/room-list-v3/RoomListStoreV3";
17-
import { useEventEmitter } from "../../../hooks/useEventEmitter";
17+
import { useEventEmitter, useEventEmitterState } from "../../../hooks/useEventEmitter";
1818
import SpaceStore from "../../../stores/spaces/SpaceStore";
1919
import { UPDATE_SELECTED_SPACE } from "../../../stores/spaces";
20+
import { useSettingValue } from "../../../hooks/useSettings";
21+
import type { Room } from "matrix-js-sdk/src/matrix";
2022

2123
/**
2224
* Provides information about a primary filter.
@@ -99,6 +101,23 @@ export function useFilteredRooms(): FilteredRooms {
99101
setIsLoadingRooms(false);
100102
});
101103

104+
const currentSpace = useEventEmitterState<Room | null>(
105+
SpaceStore.instance,
106+
UPDATE_SELECTED_SPACE,
107+
() => SpaceStore.instance.activeSpaceRoom,
108+
);
109+
const showPeopleFilter = useSettingValue("Spaces.showPeopleInSpace", currentSpace?.roomId);
110+
111+
// If the people filter is disabled in the space settings and it is currently active, unset it.
112+
useEffect(() => {
113+
if (primaryFilter === FilterKey.PeopleFilter && !showPeopleFilter) {
114+
setPrimaryFilter(() => {
115+
updateRoomsFromStore();
116+
return undefined;
117+
});
118+
}
119+
}, [primaryFilter, updateRoomsFromStore, showPeopleFilter]);
120+
102121
/**
103122
* This tells the view which primary filters are available, how to toggle them
104123
* and whether a given primary filter is active. @see {@link PrimaryFilter}
@@ -120,10 +139,13 @@ export function useFilteredRooms(): FilteredRooms {
120139
};
121140
const filters: PrimaryFilter[] = [];
122141
for (const [key, name] of filterKeyToNameMap.entries()) {
142+
// Don't render the people filter because it is disabled in space settings
143+
if (key === FilterKey.PeopleFilter && !showPeopleFilter) continue;
144+
123145
filters.push(createPrimaryFilter(key, _t(name)));
124146
}
125147
return filters;
126-
}, [primaryFilter, updateRoomsFromStore]);
148+
}, [primaryFilter, updateRoomsFromStore, showPeopleFilter]);
127149

128150
const activePrimaryFilter = useMemo(() => primaryFilters.find((filter) => filter.active), [primaryFilters]);
129151

0 commit comments

Comments
 (0)