diff options
-rw-r--r-- | webclient/components/matrix/matrix-service.js | 29 | ||||
-rw-r--r-- | webclient/room/room-controller.js | 10 |
2 files changed, 36 insertions, 3 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; } diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js index d96241b863..ab8b35961c 100644 --- a/webclient/room/room-controller.js +++ b/webclient/room/room-controller.js @@ -299,13 +299,21 @@ angular.module('RoomController', ['ngSanitize', 'mFileInput']) break; case "/op": + // Define the power level of an user if (3 === args.length) { var user_id = args[1]; var powerLevel = parseInt(args[2]); - promise = matrixService.setUserPowerLevel($scope.room_id, user_id, powerLevel); } break; + + case "/deop": + // Reset the power level of an user + if (2 === args.length) { + var user_id = args[1]; + promise = matrixService.resetUserPowerLevel($scope.room_id, user_id); + } + break; } } else { |