Improve performance of search all spaces and space switching
This commit is contained in:
parent
2bf931b9d3
commit
4279e99e4c
2 changed files with 7 additions and 6 deletions
|
@ -668,7 +668,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
* and thus might not cause an update to the store immediately.
|
* and thus might not cause an update to the store immediately.
|
||||||
* @param {IFilterCondition} filter The filter condition to add.
|
* @param {IFilterCondition} filter The filter condition to add.
|
||||||
*/
|
*/
|
||||||
public addFilter(filter: IFilterCondition): void {
|
public async addFilter(filter: IFilterCondition): Promise<void> {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log("Adding filter condition:", filter);
|
console.log("Adding filter condition:", filter);
|
||||||
|
@ -680,12 +680,14 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
promise = this.recalculatePrefiltering();
|
promise = this.recalculatePrefiltering();
|
||||||
} else {
|
} else {
|
||||||
this.filterConditions.push(filter);
|
this.filterConditions.push(filter);
|
||||||
if (this.algorithm) {
|
|
||||||
this.algorithm.addFilterCondition(filter);
|
|
||||||
}
|
|
||||||
// Runtime filters with spaces disable prefiltering for the search all spaces effect
|
// Runtime filters with spaces disable prefiltering for the search all spaces effect
|
||||||
if (SettingsStore.getValue("feature_spaces")) {
|
if (SettingsStore.getValue("feature_spaces")) {
|
||||||
promise = this.recalculatePrefiltering();
|
// this has to be awaited so that `setKnownRooms` is called in time for the `addFilterCondition` below
|
||||||
|
// this way the runtime filters are only evaluated on one dataset and not both.
|
||||||
|
await this.recalculatePrefiltering();
|
||||||
|
}
|
||||||
|
if (this.algorithm) {
|
||||||
|
this.algorithm.addFilterCondition(filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
promise.then(() => this.updateFn.trigger());
|
promise.then(() => this.updateFn.trigger());
|
||||||
|
|
|
@ -579,7 +579,6 @@ export class Algorithm extends EventEmitter {
|
||||||
|
|
||||||
this.cachedRooms = newTags;
|
this.cachedRooms = newTags;
|
||||||
this.updateTagsFromCache();
|
this.updateTagsFromCache();
|
||||||
this.recalculateFilteredRooms();
|
|
||||||
|
|
||||||
// Now that we've finished generation, we need to update the sticky room to what
|
// Now that we've finished generation, we need to update the sticky room to what
|
||||||
// it was. It's entirely possible that it changed lists though, so if it did then
|
// it was. It's entirely possible that it changed lists though, so if it did then
|
||||||
|
|
Loading…
Reference in a new issue