Skip to content
Snippets Groups Projects
Commit 6e341aeb authored by Matthew Hodgson's avatar Matthew Hodgson
Browse files

dedup all events

parent a1bf28b7
No related branches found
No related tags found
No related merge requests found
......@@ -41,6 +41,11 @@ angular.module('eventHandlerService', [])
$rootScope.events = {
rooms: {} // will contain roomId: { messages:[], members:{userid1: event} }
};
// used for dedupping events - could be expanded in future...
// FIXME: means that we leak memory over time (along with lots of the rest
// of the app, given we never try to reap memory yet)
var eventMap = {};
$rootScope.presence = {};
......@@ -155,43 +160,49 @@ angular.module('eventHandlerService', [])
POWERLEVEL_EVENT: POWERLEVEL_EVENT,
CALL_EVENT: CALL_EVENT,
NAME_EVENT: NAME_EVENT,
handleEvent: function(event, isLiveEvent) {
switch(event.type) {
case "m.room.create":
handleRoomCreate(event, isLiveEvent);
break;
case "m.room.aliases":
handleRoomAliases(event, isLiveEvent);
break;
case "m.room.message":
handleMessage(event, isLiveEvent);
break;
case "m.room.member":
handleRoomMember(event, isLiveEvent);
break;
case "m.presence":
handlePresence(event, isLiveEvent);
break;
case 'm.room.ops_levels':
case 'm.room.send_event_level':
case 'm.room.add_state_level':
case 'm.room.join_rules':
case 'm.room.power_levels':
handlePowerLevels(event, isLiveEvent);
break;
case 'm.room.name':
handleRoomName(event, isLiveEvent);
break;
default:
console.log("Unable to handle event type " + event.type);
console.log(JSON.stringify(event, undefined, 4));
break;
if (eventMap[event.event_id]) {
console.log("discarding duplicate event: " + JSON.stringify(event));
return;
}
if (event.type.indexOf('m.call.') === 0) {
handleCallEvent(event, isLiveEvent);
}
else {
switch(event.type) {
case "m.room.create":
handleRoomCreate(event, isLiveEvent);
break;
case "m.room.aliases":
handleRoomAliases(event, isLiveEvent);
break;
case "m.room.message":
handleMessage(event, isLiveEvent);
break;
case "m.room.member":
handleRoomMember(event, isLiveEvent);
break;
case "m.presence":
handlePresence(event, isLiveEvent);
break;
case 'm.room.ops_levels':
case 'm.room.send_event_level':
case 'm.room.add_state_level':
case 'm.room.join_rules':
case 'm.room.power_levels':
handlePowerLevels(event, isLiveEvent);
break;
case 'm.room.name':
handleRoomName(event, isLiveEvent);
break;
default:
console.log("Unable to handle event type " + event.type);
console.log(JSON.stringify(event, undefined, 4));
break;
}
}
},
// isLiveEvents determines whether notifications should be shown, whether
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment