@@ -45,6 +45,8 @@ import BaseAvatar from '../avatars/BaseAvatar';
4545import { throttle } from 'lodash' ;
4646import SpaceStore from "../../../stores/SpaceStore" ;
4747
48+ const getSearchQueryLSKey = ( roomId : string ) => `mx_MemberList_searchQuarry_${ roomId } ` ;
49+
4850const INITIAL_LOAD_NUM_MEMBERS = 30 ;
4951const INITIAL_LOAD_NUM_INVITED = 5 ;
5052const 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