From 77101823f552ba20ceb1a5f339a165286c1ef90c Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 19 Mar 2016 02:18:37 +0000 Subject: [PATCH] track kicked rooms correctly --- lib/sync.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/sync.js b/lib/sync.js index 7ec080ae6..7416e8408 100644 --- a/lib/sync.js +++ b/lib/sync.js @@ -719,14 +719,28 @@ SyncApi.prototype._processSyncResponse = function(syncToken, data) { accountDataEvents.forEach(function(e) { client.emit("event", e); }); }); - // Handle leaves + // Handle leaves (e.g. kicked rooms) leaveRooms.forEach(function(leaveObj) { - // Do the bear minimum to register rejected invites / you leaving rooms var room = leaveObj.room; + var stateEvents = + self._mapSyncEventsFormat(leaveObj.state, room); var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room); - room.addEvents(timelineEvents); + var accountDataEvents = + self._mapSyncEventsFormat(leaveObj.account_data); + + self._processRoomEvents(room, stateEvents, timelineEvents); + room.addAccountData(accountDataEvents); + + room.recalculate(client.credentials.userId); + if (leaveObj.isBrandNewRoom) { + client.store.storeRoom(room); + client.emit("Room", room); + } + + stateEvents.forEach(function(e) { client.emit("event", e); }); timelineEvents.forEach(function(e) { client.emit("event", e); }); + accountDataEvents.forEach(function(e) { client.emit("event", e); }); }); };