Fix bug in EventContext.deserialize. (#7393)

This caused `prev_state_ids` to be incorrect if the state event was not
replacing an existing state entry.
This commit is contained in:
Erik Johnston 2020-05-05 14:17:27 +01:00 committed by GitHub
parent 9858d5c362
commit 7941a70fa8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 126 additions and 8 deletions

View file

@ -322,11 +322,14 @@ class _AsyncEventContextImpl(EventContext):
self._current_state_ids = yield self._storage.state.get_state_ids_for_group(
self.state_group
)
if self._prev_state_id and self._event_state_key is not None:
if self._event_state_key is not None:
self._prev_state_ids = dict(self._current_state_ids)
key = (self._event_type, self._event_state_key)
self._prev_state_ids[key] = self._prev_state_id
if self._prev_state_id:
self._prev_state_ids[key] = self._prev_state_id
else:
self._prev_state_ids.pop(key, None)
else:
self._prev_state_ids = self._current_state_ids