From 1342bcedaf1ddf0f45009e7f771f51ee0c32ca6f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 24 Oct 2014 16:14:47 +0100 Subject: switch from the deprecated msg.content.prev to msg.prev_content.membership, and fix the bug where kicks of unjoined users aren't displayed sensibly in the history --- webclient/components/matrix/event-handler-service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'webclient/components') diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js index 492ec08bca..112b3ad96c 100644 --- a/webclient/components/matrix/event-handler-service.js +++ b/webclient/components/matrix/event-handler-service.js @@ -256,7 +256,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { // could be a membership change, display name change, etc. // Find out which one. var memberChanges = undefined; - if (event.content.prev !== event.content.membership) { + if (event.prev_content && (event.prev_content.membership !== event.content.membership)) { memberChanges = "membership"; } else if (event.prev_content && (event.prev_content.displayname !== event.content.displayname)) { -- cgit 1.5.1 From cf1feee21d7c79855a3d4b32f5d282b49f6218f5 Mon Sep 17 00:00:00 2001 From: giomfo Date: Mon, 27 Oct 2014 14:16:59 +0100 Subject: HandleRoomMember: handle correctly prev_content --- webclient/components/matrix/event-handler-service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'webclient/components') diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js index 112b3ad96c..e7109c0cb4 100644 --- a/webclient/components/matrix/event-handler-service.js +++ b/webclient/components/matrix/event-handler-service.js @@ -256,7 +256,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { // could be a membership change, display name change, etc. // Find out which one. var memberChanges = undefined; - if (event.prev_content && (event.prev_content.membership !== event.content.membership)) { + if ((event.prev_content === undefined && event.content.membership) || (event.prev_content && (event.prev_content.membership !== event.content.membership))) { memberChanges = "membership"; } else if (event.prev_content && (event.prev_content.displayname !== event.content.displayname)) { -- cgit 1.5.1 From 4f6acf114cf4ac3f90266ab33f12d599e0f2eb5d Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Mon, 27 Oct 2014 17:05:05 +0000 Subject: Fix SYWEB-110 : Prevent room ID leaking by looking for an m.room.name --- webclient/components/matrix/event-handler-service.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'webclient/components') diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js index e7109c0cb4..b1580b3d8a 100644 --- a/webclient/components/matrix/event-handler-service.js +++ b/webclient/components/matrix/event-handler-service.js @@ -221,9 +221,19 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { message = "* " + displayname + " " + message; } + var roomTitle = matrixService.getRoomIdToAliasMapping(event.room_id); + var theRoom = $rootScope.events.rooms[event.room_id]; + if (!roomTitle && theRoom && theRoom["m.room.name"] && theRoom["m.room.name"].content) { + roomTitle = theRoom["m.room.name"].content.name; + } + + if (!roomTitle) { + roomTitle = event.room_id; + } + var notification = new window.Notification( displayname + - " (" + (matrixService.getRoomIdToAliasMapping(event.room_id) || event.room_id) + ")", // FIXME: don't leak room_ids here + " (" + roomTitle + ")", { "body": message, "icon": member ? member.avatar_url : undefined -- cgit 1.5.1 From ed241ba032ff21fbf122dddbd23ce54d18a172d5 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Wed, 29 Oct 2014 11:29:26 +0000 Subject: Implement SYWEB-58: Clicking a notification now takes you to that room. --- webclient/app-controller.js | 2 +- webclient/components/matrix/event-handler-service.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'webclient/components') diff --git a/webclient/app-controller.js b/webclient/app-controller.js index 7d61207554..e4b7cd286f 100644 --- a/webclient/app-controller.js +++ b/webclient/app-controller.js @@ -53,7 +53,7 @@ angular.module('MatrixWebClientController', ['matrixService', 'mPresence', 'even * Open a given page. * @param {String} url url of the page */ - $scope.goToPage = function(url) { + $rootScope.goToPage = function(url) { $location.url(url); }; diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js index b1580b3d8a..d9e1fe31ce 100644 --- a/webclient/components/matrix/event-handler-service.js +++ b/webclient/components/matrix/event-handler-service.js @@ -238,6 +238,12 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { "body": message, "icon": member ? member.avatar_url : undefined }); + + notification.onclick = function() { + console.log("notification.onclick() room=" + event.room_id); + $rootScope.goToPage('room/' + (event.room_id)); + }; + $timeout(function() { notification.close(); }, 5 * 1000); -- cgit 1.5.1 From 6d4617960d0223c13f8145b31df86e1f1f8d43ec Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Wed, 29 Oct 2014 15:31:50 +0000 Subject: SYWEB-98: Add redactEvent matrix API call. --- webclient/components/matrix/matrix-service.js | 8 ++++++++ webclient/room/room-controller.js | 22 +++++++++++++++++++++- webclient/room/room.html | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) (limited to 'webclient/components') 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 @@