@@ -14,9 +14,11 @@ import RoomListStoreV3, {
14
14
LISTS_UPDATE_EVENT ,
15
15
type RoomsResult ,
16
16
} from "../../../stores/room-list-v3/RoomListStoreV3" ;
17
- import { useEventEmitter } from "../../../hooks/useEventEmitter" ;
17
+ import { useEventEmitter , useEventEmitterState } from "../../../hooks/useEventEmitter" ;
18
18
import SpaceStore from "../../../stores/spaces/SpaceStore" ;
19
19
import { UPDATE_SELECTED_SPACE } from "../../../stores/spaces" ;
20
+ import { useSettingValue } from "../../../hooks/useSettings" ;
21
+ import type { Room } from "matrix-js-sdk/src/matrix" ;
20
22
21
23
/**
22
24
* Provides information about a primary filter.
@@ -99,6 +101,23 @@ export function useFilteredRooms(): FilteredRooms {
99
101
setIsLoadingRooms ( false ) ;
100
102
} ) ;
101
103
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
+
102
121
/**
103
122
* This tells the view which primary filters are available, how to toggle them
104
123
* and whether a given primary filter is active. @see {@link PrimaryFilter}
@@ -120,10 +139,13 @@ export function useFilteredRooms(): FilteredRooms {
120
139
} ;
121
140
const filters : PrimaryFilter [ ] = [ ] ;
122
141
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
+
123
145
filters . push ( createPrimaryFilter ( key , _t ( name ) ) ) ;
124
146
}
125
147
return filters ;
126
- } , [ primaryFilter , updateRoomsFromStore ] ) ;
148
+ } , [ primaryFilter , updateRoomsFromStore , showPeopleFilter ] ) ;
127
149
128
150
const activePrimaryFilter = useMemo ( ( ) => primaryFilters . find ( ( filter ) => filter . active ) , [ primaryFilters ] ) ;
129
151
0 commit comments