diff options
Diffstat (limited to 'webclient')
-rw-r--r-- | webclient/components/matrix/matrix-service.js | 9 | ||||
-rw-r--r-- | webclient/rooms/rooms-controller.js | 20 | ||||
-rw-r--r-- | webclient/rooms/rooms.html | 4 |
3 files changed, 31 insertions, 2 deletions
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 @@ </div> <div> <form> - <input size="40" ng-model="goToRoom.room_id" ng-enter="goToRoom(goToRoom.room_id)" placeholder="(e.g. #foo_channe:example.org)"/> - <button ng-disabled="!goToRoom.room_id" ng-click="goToRoom(goToRoom.room_id)">Go to room</button> + <input size="40" ng-model="joinAlias.room_alias" ng-enter="joinAlias(joinAlias.room_alias)" placeholder="(e.g. #foo_channe:example.org)"/> + <button ng-disabled="!joinAlias.room_alias" ng-click="joinAlias(joinAlias.room_alias)">Join room</button> </form> </div> <br/> |