Change ListNotificationState to store room ids (#9518)
* Changed ListNotificationState to store room ids ListNotificationState stores a reference to a rooms array which is later used for comparing the stored array with new arrays. However, the comparison may fail since the stored array can be changed outside the class. This PR proposes to instead store only the room ids, which hopefully allows to avoid the issue by copying the room ids into a new array, while still being performant. Signed-off-by: Arne Wilken arnepokemon@yahoo.de * Change ListNotificationState to shallow clone rooms Instead of using room ids like in the previous commit, shallow clone the rooms array instead. Signed-off-by: Arne Wilken arnepokemon@yahoo.de Co-authored-by: Robin <robin@robin.town>
This commit is contained in:
parent
89a1eaca66
commit
1e65dcd0aa
1 changed files with 1 additions and 1 deletions
|
@ -45,7 +45,7 @@ export class ListNotificationState extends NotificationState {
|
||||||
|
|
||||||
const oldRooms = this.rooms;
|
const oldRooms = this.rooms;
|
||||||
const diff = arrayDiff(oldRooms, rooms);
|
const diff = arrayDiff(oldRooms, rooms);
|
||||||
this.rooms = rooms;
|
this.rooms = [...rooms];
|
||||||
for (const oldRoom of diff.removed) {
|
for (const oldRoom of diff.removed) {
|
||||||
const state = this.states[oldRoom.roomId];
|
const state = this.states[oldRoom.roomId];
|
||||||
if (!state) continue; // We likely just didn't have a badge (race condition)
|
if (!state) continue; // We likely just didn't have a badge (race condition)
|
||||||
|
|
Loading…
Reference in a new issue