Merge pull request #4804 from matrix-org/travis/room-list/watchers

Trigger room-specific watchers whenever a higher level change happens
This commit is contained in:
Travis Ralston 2020-06-22 14:15:53 -06:00 committed by GitHub
commit edafb2467d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -51,8 +51,17 @@ export class WatchManager {
const roomWatchers = this._watchers[settingName]; const roomWatchers = this._watchers[settingName];
const callbacks = []; const callbacks = [];
if (inRoomId !== null && roomWatchers[inRoomId]) callbacks.push(...roomWatchers[inRoomId]); if (inRoomId !== null && roomWatchers[inRoomId]) {
if (roomWatchers[null]) callbacks.push(...roomWatchers[null]); callbacks.push(...roomWatchers[inRoomId]);
}
if (!inRoomId) {
// Fire updates to all the individual room watchers too, as they probably
// care about the change higher up.
callbacks.push(...Object.values(roomWatchers).reduce((r, a) => [...r, ...a], []));
} else if (roomWatchers[null]) {
callbacks.push(...roomWatchers[null]);
}
for (const callback of callbacks) { for (const callback of callbacks) {
callback(inRoomId, atLevel, newValueAtLevel); callback(inRoomId, atLevel, newValueAtLevel);