Ensure tag changes (leaving rooms) causes rooms to move between lists
Fixes https://github.com/vector-im/riot-web/issues/14442 Turns out that we are so good at moving a room that when it flows through as a TIMELINE update the algorithm no-ops and does nothing, so don't do that.pull/21833/head
parent
ea15725164
commit
d2c7a55fa0
|
@ -698,8 +698,8 @@ export class Algorithm extends EventEmitter {
|
|||
}
|
||||
}
|
||||
|
||||
let didTagChange = false;
|
||||
if (cause === RoomUpdateCause.PossibleTagChange) {
|
||||
let didTagChange = false;
|
||||
const oldTags = this.roomIdsToTags[room.roomId] || [];
|
||||
const newTags = this.getTagsForRoom(room);
|
||||
const diff = arrayDiff(oldTags, newTags);
|
||||
|
@ -713,6 +713,11 @@ export class Algorithm extends EventEmitter {
|
|||
if (!algorithm) throw new Error(`No algorithm for ${rmTag}`);
|
||||
await algorithm.handleRoomUpdate(room, RoomUpdateCause.RoomRemoved);
|
||||
this.cachedRooms[rmTag] = algorithm.orderedRooms;
|
||||
|
||||
// Later on we won't update the filtered rooms or sticky room for removed
|
||||
// tags, so do so now.
|
||||
this.recalculateFilteredRoomsForTag(rmTag);
|
||||
this.recalculateStickyRoom(rmTag);
|
||||
}
|
||||
for (const addTag of diff.added) {
|
||||
if (!window.mx_QuietRoomListLogging) {
|
||||
|
@ -812,7 +817,7 @@ export class Algorithm extends EventEmitter {
|
|||
return false;
|
||||
}
|
||||
|
||||
let changed = false;
|
||||
let changed = didTagChange;
|
||||
for (const tag of tags) {
|
||||
const algorithm: OrderingAlgorithm = this.algorithms[tag];
|
||||
if (!algorithm) throw new Error(`No algorithm for ${tag}`);
|
||||
|
|
Loading…
Reference in New Issue