Only emit in RoomViewStore when state actually changes
This adds a shallow state check to attempt to only emit a store update when something actually changes. Fixes https://github.com/vector-im/riot-web/issues/12256pull/21833/head
parent
f89ae19d76
commit
c916ef4534
|
@ -66,6 +66,20 @@ class RoomViewStore extends Store {
|
|||
}
|
||||
|
||||
_setState(newState) {
|
||||
// If values haven't changed, there's nothing to do.
|
||||
// This only tries a shallow comparison, so unchanged objects will slip
|
||||
// through, but that's probably okay for now.
|
||||
let stateChanged = false;
|
||||
for (const key of Object.keys(newState)) {
|
||||
if (this._state[key] !== newState[key]) {
|
||||
stateChanged = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!stateChanged) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._state = Object.assign(this._state, newState);
|
||||
this.__emitChange();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue