Handle off-cycle filtering updates in the new room list

This commit is contained in:
Travis Ralston 2020-07-10 11:07:47 -06:00
parent 1175eb001f
commit 9e76a2cebf
2 changed files with 16 additions and 3 deletions

View file

@ -25,7 +25,7 @@ import { IListOrderingMap, ITagMap, ITagSortingMap, ListAlgorithm, SortAlgorithm
import { ActionPayload } from "../../dispatcher/payloads";
import defaultDispatcher from "../../dispatcher/dispatcher";
import { readReceiptChangeIsFor } from "../../utils/read-receipts";
import { IFilterCondition } from "./filters/IFilterCondition";
import { FILTER_CHANGED, IFilterCondition } from "./filters/IFilterCondition";
import { TagWatcher } from "./TagWatcher";
import RoomViewStore from "../RoomViewStore";
import { Algorithm, LIST_UPDATED_EVENT } from "./algorithms/Algorithm";
@ -65,6 +65,7 @@ export class RoomListStore2 extends AsyncStore<ActionPayload> {
for (const settingName of this.watchedSettings) SettingsStore.monitorSetting(settingName, null);
RoomViewStore.addListener(() => this.handleRVSUpdate({}));
this.algorithm.on(LIST_UPDATED_EVENT, this.onAlgorithmListUpdated);
this.algorithm.on(FILTER_CHANGED, this.onAlgorithmFilterUpdated);
}
public get orderedLists(): ITagMap {
@ -479,6 +480,11 @@ export class RoomListStore2 extends AsyncStore<ActionPayload> {
this.updateFn.mark();
};
private onAlgorithmFilterUpdated = () => {
// The filter can happen off-cycle, so trigger an update if we need to.
this.updateFn.triggerIfWillMark();
};
/**
* Regenerates the room whole room list, discarding any previous results.
* @param trigger Set to false to prevent a list update from being sent. Should only