diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js
index b6e5c2eaac..f248116914 100644
--- a/webclient/components/matrix/event-handler-service.js
+++ b/webclient/components/matrix/event-handler-service.js
@@ -95,6 +95,15 @@ angular.module('eventHandlerService', [])
$rootScope.presence[event.content.user_id] = event;
$rootScope.$broadcast(PRESENCE_EVENT, event, isLiveEvent);
};
+
+ var handlePowerLevels = function(event, isLiveEvent) {
+ initRoom(event.room_id);
+
+ $rootScope.events.rooms[event.room_id][event.type] = event;
+
+ //TODO
+ //$rootScope.$broadcast(PRESENCE_EVENT, event, isLiveEvent);
+ };
var handleCallEvent = function(event, isLiveEvent) {
$rootScope.$broadcast(CALL_EVENT, event, isLiveEvent);
@@ -118,8 +127,17 @@ angular.module('eventHandlerService', [])
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;
+
default:
console.log("Unable to handle event type " + event.type);
+ console.log(JSON.stringify(event, undefined, 4));
break;
}
if (event.type.indexOf('m.call.') == 0) {
diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js
index d509c20b0f..2ae55bea9f 100644
--- a/webclient/components/matrix/matrix-service.js
+++ b/webclient/components/matrix/matrix-service.js
@@ -484,6 +484,30 @@ angular.module('matrixService', [])
getRoomIdToAliasMapping: function(roomId) {
return localStorage.getItem(MAPPING_PREFIX+roomId);
+ },
+
+
+ /****** Power levels management ******/
+
+ /**
+ * Return the power level of an user in a particular room
+ * @param {String} room_id the room id
+ * @param {String} user_id the user id
+ * @returns {Number} a value between 0 and 10
+ */
+ getUserPowerLevel: function(room_id, user_id) {
+ var powerLevel = 0;
+ var room = $rootScope.events.rooms[room_id];
+ if (room && room["m.room.power_levels"]) {
+ if (user_id in room["m.room.power_levels"].content) {
+ powerLevel = room["m.room.power_levels"].content[user_id];
+ }
+ else {
+ // Use the room default user power
+ powerLevel = room["m.room.power_levels"].content["default"];
+ }
+ }
+ return powerLevel;
}
};
|