1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-21 04:02:35 +03:00

Handle ephemeral and account_data events

This commit is contained in:
Kegan Dougal
2015-12-10 14:27:21 +00:00
parent 6af2197183
commit f08152a1d8

View File

@@ -277,10 +277,18 @@ SyncApi.prototype._sync = function(syncOptions, attempt) {
var room = joinObj.room;
var stateEvents = self._mapSyncEventsFormat(joinObj.state, room);
var timelineEvents = self._mapSyncEventsFormat(joinObj.timeline, room);
var ephemeralEvents = self._mapSyncEventsFormat(joinObj.ephemeral);
var accountDataEvents = self._mapSyncEventsFormat(joinObj.account_data);
if (joinObj.timeline.limited) {
// nuke the timeline so we don't get holes
room.timeline = [];
}
self._processRoomEvents(
room, stateEvents, timelineEvents, joinObj.timeline.prev_batch
);
// TODO: Receipts, Typing, Tags from ephermeral + account_data
room.addEvents(ephemeralEvents);
room.addEvents(accountDataEvents);
room.recalculate(client.credentials.userId);
if (joinObj.isBrandNewRoom) {
client.store.storeRoom(room);
@@ -296,57 +304,6 @@ SyncApi.prototype._sync = function(syncOptions, attempt) {
console.error("Caught /sync error:");
console.error(e);
}
/*
var i, j;
// intercept the results and put them into our store
if (!(client.store instanceof StubStore)) {
// group receipts by room ID.
var receiptsByRoom = {};
data.receipts = data.receipts || [];
utils.forEach(data.receipts.map(client.getEventMapper()),
function(receiptEvent) {
if (!receiptsByRoom[receiptEvent.getRoomId()]) {
receiptsByRoom[receiptEvent.getRoomId()] = [];
}
receiptsByRoom[receiptEvent.getRoomId()].push(receiptEvent);
}
);
for (i = 0; i < data.rooms.length; i++) {
_processRoomEvents(
client, room, data.rooms[i].state, data.rooms[i].messages
);
var receipts = receiptsByRoom[room.roomId] || [];
for (j = 0; j < receipts.length; j++) {
room.addReceipt(receipts[j]);
}
var privateUserData = data.rooms[i].account_data || [];
var privateUserDataEvents =
utils.map(privateUserData, client.getEventMapper());
for (j = 0; j < privateUserDataEvents.length; j++) {
var event = privateUserDataEvents[j];
if (event.getType() === "m.tag") {
room.addTags(event);
}
// XXX: unhandled private user data event - we should probably
// put it somewhere useful once the API has settled
}
// cache the name/summary/etc prior to storage since we don't
// know how the store will serialise the Room.
room.recalculate(client.credentials.userId);
client.store.storeRoom(room);
client.emit("Room", room);
}
}
*/
// emit synced events
if (!syncOptions.hasSyncedBefore) {