summary refs log tree commit diff
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2014-10-29 15:31:50 +0000
committerKegan Dougal <kegan@matrix.org>2014-10-29 15:31:50 +0000
commit6d4617960d0223c13f8145b31df86e1f1f8d43ec (patch)
tree6b813a1daa4daaa3b31ec12add810487ffef4ac1
parentSYWEB-98: Add a 'Redact' button to the event info modal dialog. (diff)
downloadsynapse-6d4617960d0223c13f8145b31df86e1f1f8d43ec.tar.xz
SYWEB-98: Add redactEvent matrix API call.
-rw-r--r--webclient/components/matrix/matrix-service.js8
-rw-r--r--webclient/room/room-controller.js22
-rw-r--r--webclient/room/room.html2
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>