diff options
author | Kegan Dougal <kegan@matrix.org> | 2014-10-29 15:31:50 +0000 |
---|---|---|
committer | Kegan Dougal <kegan@matrix.org> | 2014-10-29 15:31:50 +0000 |
commit | 6d4617960d0223c13f8145b31df86e1f1f8d43ec (patch) | |
tree | 6b813a1daa4daaa3b31ec12add810487ffef4ac1 /webclient | |
parent | SYWEB-98: Add a 'Redact' button to the event info modal dialog. (diff) | |
download | synapse-6d4617960d0223c13f8145b31df86e1f1f8d43ec.tar.xz |
SYWEB-98: Add redactEvent matrix API call.
Diffstat (limited to 'webclient')
-rw-r--r-- | webclient/components/matrix/matrix-service.js | 8 | ||||
-rw-r--r-- | webclient/room/room-controller.js | 22 | ||||
-rw-r--r-- | webclient/room/room.html | 2 |
3 files changed, 30 insertions, 2 deletions
diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js index a4f0568bce..1840cf46c0 100644 --- a/webclient/components/matrix/matrix-service.js +++ b/webclient/components/matrix/matrix-service.js @@ -438,6 +438,14 @@ angular.module('matrixService', []) return this.sendMessage(room_id, msg_id, content); }, + redactEvent: function(room_id, event_id) { + var path = "/rooms/$room_id/redact/$event_id"; + path = path.replace("$room_id", room_id); + path = path.replace("$event_id", event_id); + var content = {}; + return doRequest("POST", path, undefined, content); + }, + // get a snapshot of the members in a room. getMemberList: function(room_id) { // Like the cmd client, escape room ids diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js index c4014b2fe0..841b5cccdd 100644 --- a/webclient/room/room-controller.js +++ b/webclient/room/room-controller.js @@ -995,6 +995,26 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput']) controller: 'EventInfoController', scope: $scope }); + + modalInstance.result.then(function(action) { + if (action === "redact") { + var eventId = $scope.event_selected.event_id; + console.log("Redacting event ID " + eventId); + matrixService.redactEvent( + $scope.event_selected.room_id, + eventId + ).then(function(response) { + console.log("Redaction = " + JSON.stringify(response)); + }, function(error) { + console.error("Failed to redact event: "+JSON.stringify(error)); + if (error.data.error) { + $scope.feedback = error.data.error; + } + }); + } + }, function() { + // any dismiss code + }); }; }]) @@ -1004,6 +1024,6 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput']) console.log("User level = "+$scope.pow($scope.room_id, $scope.state.user_id)+ " Redact level = "+$scope.events.rooms[$scope.room_id]["m.room.ops_levels"].content.redact_level); console.log("Redact event >> " + JSON.stringify($scope.event_selected)); - $modalInstance.dismiss(); + $modalInstance.close("redact"); }; }); diff --git a/webclient/room/room.html b/webclient/room/room.html index 5293a579d3..85ae0eeca4 100644 --- a/webclient/room/room.html +++ b/webclient/room/room.html @@ -6,7 +6,7 @@ </div> <div class="modal-footer"> <button ng-click="redact()" type="button" class="btn btn-danger" - ng-disabled="pow(room_id, state.user_id) < events.rooms[room_id]['m.room.ops_levels'].content.redact_level" + ng-disabled="!events.rooms[room_id]['m.room.ops_levels'].content.redact_level || !pow(room_id, state.user_id) || pow(room_id, state.user_id) < events.rooms[room_id]['m.room.ops_levels'].content.redact_level" title="Delete this event on all home servers. This cannot be undone."> Redact </button> |