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/>
|