diff options
author | Erik Johnston <erik@matrix.org> | 2016-04-01 17:39:32 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-04-01 17:39:32 +0100 |
commit | d76d89323c4b962b4f3ff72a3c9b40f2d2d347b3 (patch) | |
tree | 3bdcc5d9ce89feae3f9545d5f02cc54584eb8d2c /synapse/handlers/_base.py | |
parent | Remove state hack from _create_new_client_event (diff) | |
download | synapse-d76d89323c4b962b4f3ff72a3c9b40f2d2d347b3.tar.xz |
Use computed prev event ids
Diffstat (limited to 'synapse/handlers/_base.py')
-rw-r--r-- | synapse/handlers/_base.py | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/synapse/handlers/_base.py b/synapse/handlers/_base.py index 2d8ff79a9e..242afa1564 100644 --- a/synapse/handlers/_base.py +++ b/synapse/handlers/_base.py @@ -199,20 +199,25 @@ class BaseHandler(object): ) @defer.inlineCallbacks - def _create_new_client_event(self, builder): - latest_ret = yield self.store.get_latest_event_ids_and_hashes_in_room( - builder.room_id, - ) - - if latest_ret: - depth = max([d for _, _, d in latest_ret]) + 1 + def _create_new_client_event(self, builder, prev_event_ids=None): + if prev_event_ids: + prev_events = yield self.store.add_event_hashes(prev_event_ids) + prev_max_depth = yield self.store.get_max_depth_of_events(prev_event_ids) + depth = prev_max_depth + 1 else: - depth = 1 + latest_ret = yield self.store.get_latest_event_ids_and_hashes_in_room( + builder.room_id, + ) - prev_events = [ - (event_id, prev_hashes) - for event_id, prev_hashes, _ in latest_ret - ] + if latest_ret: + depth = max([d for _, _, d in latest_ret]) + 1 + else: + depth = 1 + + prev_events = [ + (event_id, prev_hashes) + for event_id, prev_hashes, _ in latest_ret + ] builder.prev_events = prev_events builder.depth = depth |