diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js index bbfffe75e7..f98874dc74 100644 --- a/webclient/components/matrix/matrix-service.js +++ b/webclient/components/matrix/matrix-service.js @@ -111,6 +111,15 @@ angular.module('matrixService', []) }); }, + joinAlias: function(room_alias) { + var path = "/join/$room_alias"; + room_alias = encodeURIComponent(room_alias); + + path = path.replace("$room_alias", room_alias); + + return doRequest("PUT", path, undefined, {}); + }, + // Invite a user to a room invite: function(room_id, user_id) { // The REST path spec diff --git a/webclient/rooms/rooms-controller.js b/webclient/rooms/rooms-controller.js index 58420e0eb2..33912d63f9 100644 --- a/webclient/rooms/rooms-controller.js +++ b/webclient/rooms/rooms-controller.js @@ -18,6 +18,10 @@ angular.module('RoomsController', ['matrixService']) room_id: "", }; + $scope.joinAlias = { + room_alias: "", + }; + $scope.newProfileInfo = { name: matrixService.config().displayName, avatar: matrixService.config().avatarUrl @@ -106,6 +110,22 @@ angular.module('RoomsController', ['matrixService']) ); }; + $scope.joinAlias = function(room_alias) { + matrixService.joinAlias(room_alias).then( + function(response) { + if (response.hasOwnProperty("room_id")) { + $location.path("room/" + response.room_id); + return; + } else { + // TODO (erikj): Do something here? + } + }, + function(reason) { + $scope.feedback = "Can't join room: " + reason; + } + ); + }; + $scope.setDisplayName = function(newName) { matrixService.setDisplayName(newName).then( function(response) { diff --git a/webclient/rooms/rooms.html b/webclient/rooms/rooms.html index 04b153982e..f134e5ee8c 100644 --- a/webclient/rooms/rooms.html +++ b/webclient/rooms/rooms.html @@ -68,8 +68,8 @@
- - + +