From c17f3d896ff910e3801362d29990d98cd0b2119e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Thu, 19 Aug 2021 15:48:14 +0200 Subject: [PATCH] Persist last `MemberList` search query per-room MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/rooms/MemberList.tsx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/MemberList.tsx b/src/components/views/rooms/MemberList.tsx index 0c90d2ee096..415d7e942b1 100644 --- a/src/components/views/rooms/MemberList.tsx +++ b/src/components/views/rooms/MemberList.tsx @@ -45,6 +45,8 @@ import BaseAvatar from '../avatars/BaseAvatar'; import { throttle } from 'lodash'; import SpaceStore from "../../../stores/SpaceStore"; +const getSearchQueryLSKey = (roomId: string) => `mx_MemberList_searchQuarry_${roomId}`; + const INITIAL_LOAD_NUM_MEMBERS = 30; const INITIAL_LOAD_NUM_INVITED = 5; const SHOW_MORE_INCREMENT = 100; @@ -171,6 +173,13 @@ export default class MemberList extends React.Component { } private getMembersState(members: Array): IState { + let searchQuery; + try { + searchQuery = window.localStorage.getItem(getSearchQueryLSKey(this.props.roomId)); + } catch (error) { + console.warn("Failed to get last the MemberList search query", error); + } + // set the state after determining showPresence to make sure it's // taken into account while rendering return { @@ -184,7 +193,7 @@ export default class MemberList extends React.Component { // in practice I find that a little constraining truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS, truncateAtInvited: INITIAL_LOAD_NUM_INVITED, - searchQuery: "", + searchQuery: searchQuery ?? "", }; } @@ -414,6 +423,12 @@ export default class MemberList extends React.Component { }; private onSearchQueryChanged = (searchQuery: string): void => { + try { + window.localStorage.setItem(getSearchQueryLSKey(this.props.roomId), searchQuery); + } catch (error) { + console.warn("Failed to set the last MemberList search query", error); + } + this.setState({ searchQuery, filteredJoinedMembers: this.filterMembers(this.state.members, 'join', searchQuery), @@ -554,7 +569,9 @@ export default class MemberList extends React.Component { + onSearch={this.onSearchQueryChanged} + initialValue={this.state.searchQuery} + /> ); let previousPhase = RightPanelPhases.RoomSummary;