Remember the last used server for room directory searches

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
Šimon Brandner 2021-07-07 12:01:08 +02:00
parent 1220ad37ce
commit b94dc2d0e5
No known key found for this signature in database
GPG key ID: 9760693FDD98A790

View file

@ -48,6 +48,9 @@ import { ActionPayload } from "../../dispatcher/payloads";
const MAX_NAME_LENGTH = 80; const MAX_NAME_LENGTH = 80;
const MAX_TOPIC_LENGTH = 800; const MAX_TOPIC_LENGTH = 800;
const LAST_SERVER_KEY = "mx_last_room_directory_server";
const LAST_INSTANCE_KEY = "mx_last_room_directory_instance";
function track(action: string) { function track(action: string) {
Analytics.trackEvent('RoomDirectory', action); Analytics.trackEvent('RoomDirectory', action);
} }
@ -150,8 +153,8 @@ export default class RoomDirectory extends React.Component<IProps, IState> {
publicRooms: [], publicRooms: [],
loading: true, loading: true,
error: null, error: null,
instanceId: undefined, instanceId: localStorage.getItem(LAST_INSTANCE_KEY),
roomServer: MatrixClientPeg.getHomeserverName(), roomServer: localStorage.getItem(LAST_SERVER_KEY) || MatrixClientPeg.getHomeserverName(),
filterString: this.props.initialText || "", filterString: this.props.initialText || "",
selectedCommunityId, selectedCommunityId,
communityName: null, communityName: null,
@ -342,7 +345,7 @@ export default class RoomDirectory extends React.Component<IProps, IState> {
} }
}; };
private onOptionChange = (server: string, instanceId?: string | symbol) => { private onOptionChange = (server: string, instanceId?: string) => {
// clear next batch so we don't try to load more rooms // clear next batch so we don't try to load more rooms
this.nextBatch = null; this.nextBatch = null;
this.setState({ this.setState({
@ -360,6 +363,14 @@ export default class RoomDirectory extends React.Component<IProps, IState> {
// find the five gitter ones, at which point we do not want // find the five gitter ones, at which point we do not want
// to render all those rooms when switching back to 'all networks'. // to render all those rooms when switching back to 'all networks'.
// Easiest to just blow away the state & re-fetch. // Easiest to just blow away the state & re-fetch.
// We have to be careful here so that we don't set instanceId = "undefined"
localStorage.setItem(LAST_SERVER_KEY, server);
if (instanceId) {
localStorage.setItem(LAST_INSTANCE_KEY, instanceId);
} else {
localStorage.removeItem(LAST_INSTANCE_KEY);
}
}; };
private onFillRequest = (backwards: boolean) => { private onFillRequest = (backwards: boolean) => {