Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 3bcb57d

Browse files
authored
Merge pull request #6640 from SimonBrandner/feature/persist-search-member-list/18613
Remember last `MemberList` search query per-room
2 parents 573a68a + c17f3d8 commit 3bcb57d

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

src/components/views/rooms/MemberList.tsx

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ import BaseAvatar from '../avatars/BaseAvatar';
4545
import { throttle } from 'lodash';
4646
import SpaceStore from "../../../stores/SpaceStore";
4747

48+
const getSearchQueryLSKey = (roomId: string) => `mx_MemberList_searchQuarry_${roomId}`;
49+
4850
const INITIAL_LOAD_NUM_MEMBERS = 30;
4951
const INITIAL_LOAD_NUM_INVITED = 5;
5052
const SHOW_MORE_INCREMENT = 100;
@@ -171,6 +173,13 @@ export default class MemberList extends React.Component<IProps, IState> {
171173
}
172174

173175
private getMembersState(members: Array<RoomMember>): IState {
176+
let searchQuery;
177+
try {
178+
searchQuery = window.localStorage.getItem(getSearchQueryLSKey(this.props.roomId));
179+
} catch (error) {
180+
console.warn("Failed to get last the MemberList search query", error);
181+
}
182+
174183
// set the state after determining showPresence to make sure it's
175184
// taken into account while rendering
176185
return {
@@ -184,7 +193,7 @@ export default class MemberList extends React.Component<IProps, IState> {
184193
// in practice I find that a little constraining
185194
truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
186195
truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
187-
searchQuery: "",
196+
searchQuery: searchQuery ?? "",
188197
};
189198
}
190199

@@ -414,6 +423,12 @@ export default class MemberList extends React.Component<IProps, IState> {
414423
};
415424

416425
private onSearchQueryChanged = (searchQuery: string): void => {
426+
try {
427+
window.localStorage.setItem(getSearchQueryLSKey(this.props.roomId), searchQuery);
428+
} catch (error) {
429+
console.warn("Failed to set the last MemberList search query", error);
430+
}
431+
417432
this.setState({
418433
searchQuery,
419434
filteredJoinedMembers: this.filterMembers(this.state.members, 'join', searchQuery),
@@ -554,7 +569,9 @@ export default class MemberList extends React.Component<IProps, IState> {
554569
<SearchBox
555570
className="mx_MemberList_query mx_textinput_icon mx_textinput_search"
556571
placeholder={_t('Filter room members')}
557-
onSearch={this.onSearchQueryChanged} />
572+
onSearch={this.onSearchQueryChanged}
573+
initialValue={this.state.searchQuery}
574+
/>
558575
);
559576

560577
let previousPhase = RightPanelPhases.RoomSummary;

0 commit comments

Comments
 (0)