mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Parse /initialSync data and populate the new data structures.
This commit is contained in:
parent
2aa79f4fbe
commit
394f77c3ff
@ -86,6 +86,18 @@ function(matrixService, $rootScope, $q, $timeout, mPresence, notificationService
|
|||||||
}
|
}
|
||||||
$rootScope.events.rooms[room_id].membership = room.membership;
|
$rootScope.events.rooms[room_id].membership = room.membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
var __room = modelService.getRoom(room_id);
|
||||||
|
if (room) { // /initialSync data
|
||||||
|
__room.current_room_state.storeStateEvents(room.state);
|
||||||
|
__room.current_room_state.pagination_token = room.messages.end;
|
||||||
|
|
||||||
|
__room.old_room_state.storeStateEvents(room.state);
|
||||||
|
__room.old_room_state.pagination_token = room.messages.start;
|
||||||
|
|
||||||
|
__room.addMessages(room.messages.chunk);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var resetRoomMessages = function(room_id) {
|
var resetRoomMessages = function(room_id) {
|
||||||
|
@ -31,10 +31,22 @@ angular.module('modelService', [])
|
|||||||
/***** Room Object *****/
|
/***** Room Object *****/
|
||||||
var Room = function Room(room_id) {
|
var Room = function Room(room_id) {
|
||||||
this.room_id = room_id;
|
this.room_id = room_id;
|
||||||
this.old_room_state = RoomState();
|
this.old_room_state = new RoomState();
|
||||||
this.current_room_state = RoomState();
|
this.current_room_state = new RoomState();
|
||||||
|
this.messages = []; // events which can be displayed on the UI. TODO move?
|
||||||
};
|
};
|
||||||
Room.prototype = {
|
Room.prototype = {
|
||||||
|
addMessages: function addMessages(events, toFront) {
|
||||||
|
for (var i=0; i<events.length; i++) {
|
||||||
|
if (toFront) {
|
||||||
|
this.messages.unshift(events[i]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.messages.push(events[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
leave: function leave() {
|
leave: function leave() {
|
||||||
return matrixService.leave(this.room_id);
|
return matrixService.leave(this.room_id);
|
||||||
}
|
}
|
||||||
@ -46,7 +58,6 @@ angular.module('modelService', [])
|
|||||||
this.members = [];
|
this.members = [];
|
||||||
// state events, the key is a compound of event type + state_key
|
// state events, the key is a compound of event type + state_key
|
||||||
this.state_events = {};
|
this.state_events = {};
|
||||||
// earliest token
|
|
||||||
this.pagination_token = "";
|
this.pagination_token = "";
|
||||||
};
|
};
|
||||||
RoomState.prototype = {
|
RoomState.prototype = {
|
||||||
@ -62,8 +73,14 @@ angular.module('modelService', [])
|
|||||||
return this.state_events[type + state_key];
|
return this.state_events[type + state_key];
|
||||||
},
|
},
|
||||||
|
|
||||||
storeState: function storeState(event) {
|
storeStateEvent: function storeState(event) {
|
||||||
this.state_events[event.type + event.state_key] = event;
|
this.state_events[event.type + event.state_key] = event;
|
||||||
|
},
|
||||||
|
|
||||||
|
storeStateEvents: function storeState(events) {
|
||||||
|
for (var i=0; i<events.length; i++) {
|
||||||
|
this.storeStateEvent(events[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user