diff options
Diffstat (limited to 'webclient/components')
-rw-r--r-- | webclient/components/matrix/matrix-service.js | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js index bedabe6286..eadbb03d9e 100644 --- a/webclient/components/matrix/matrix-service.js +++ b/webclient/components/matrix/matrix-service.js @@ -522,7 +522,6 @@ angular.module('matrixService', []) return powerLevel; }, - // /** * Change the power level of a user * @param {String} room_id the room id @@ -554,7 +553,33 @@ angular.module('matrixService', []) // The room does not exist or does not contain power_levels data var deferred = $q.defer(); - deferred.reject({data:{error: "Invalied room: " + room_id}}); + deferred.reject({data:{error: "Invalid room: " + room_id}}); + return deferred.promise; + }, + + /** + * reset the power level of a user so that he will use the room default power level + * @param {String} room_id the room id + * @param {String} user_id the user id + * @returns {promise} an $http promise + */ + resetUserPowerLevel: function(room_id, user_id) { + // Hack: currently, there is no home server API so do it by hand by updating + // the current m.room.power_levels of the room and send it to the server + var room = $rootScope.events.rooms[room_id]; + if (room && room["m.room.power_levels"]) { + var content = angular.copy(room["m.room.power_levels"].content); + delete content[user_id]; + + var path = "/rooms/$room_id/state/m.room.power_levels"; + path = path.replace("$room_id", encodeURIComponent(room_id)); + + return doRequest("PUT", path, undefined, content); + } + + // The room does not exist or does not contain power_levels data + var deferred = $q.defer(); + deferred.reject({data:{error: "Invalid room: " + room_id}}); return deferred.promise; } |