Moved mRoomName filter into matrix-filter.js, a place for all generic filters using Matrix data.
This commit is contained in:
parent
eb7d7ce354
commit
7346ea85c0
|
@ -79,85 +79,4 @@ angular.module('matrixWebClient')
|
||||||
return function(text) {
|
return function(text) {
|
||||||
return $sce.trustAsHtml(text);
|
return $sce.trustAsHtml(text);
|
||||||
};
|
};
|
||||||
}])
|
}]);
|
||||||
|
|
||||||
// Compute the room name according to information we have
|
|
||||||
.filter('roomName', ['$rootScope', 'matrixService', function($rootScope, matrixService) {
|
|
||||||
return function(room_id) {
|
|
||||||
var roomName;
|
|
||||||
|
|
||||||
// If there is an alias, use it
|
|
||||||
// TODO: only one alias is managed for now
|
|
||||||
var alias = matrixService.getRoomIdToAliasMapping(room_id);
|
|
||||||
if (alias) {
|
|
||||||
roomName = alias;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (undefined === roomName) {
|
|
||||||
// Else, build the name from its users
|
|
||||||
var room = $rootScope.events.rooms[room_id];
|
|
||||||
if (room) {
|
|
||||||
var room_name_event = room["m.room.name"];
|
|
||||||
|
|
||||||
if (room_name_event) {
|
|
||||||
roomName = room_name_event.content.name;
|
|
||||||
}
|
|
||||||
else if (room.members) {
|
|
||||||
// Limit the room renaming to 1:1 room
|
|
||||||
if (2 === Object.keys(room.members).length) {
|
|
||||||
for (var i in room.members) {
|
|
||||||
var member = room.members[i];
|
|
||||||
if (member.state_key !== matrixService.config().user_id) {
|
|
||||||
|
|
||||||
if (member.state_key in $rootScope.presence) {
|
|
||||||
// If the user is available in presence, use the displayname there
|
|
||||||
// as it is the most uptodate
|
|
||||||
roomName = $rootScope.presence[member.state_key].content.displayname;
|
|
||||||
}
|
|
||||||
else if (member.content.displayname) {
|
|
||||||
roomName = member.content.displayname;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
roomName = member.state_key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (1 === Object.keys(room.members).length) {
|
|
||||||
// The other member may be in the invite list, get all invited users
|
|
||||||
var invitedUserIDs = [];
|
|
||||||
for (var i in room.messages) {
|
|
||||||
var message = room.messages[i];
|
|
||||||
if ("m.room.member" === message.type && "invite" === message.membership) {
|
|
||||||
// Make sure there is no duplicate user
|
|
||||||
if (-1 === invitedUserIDs.indexOf(message.state_key)) {
|
|
||||||
invitedUserIDs.push(message.state_key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// For now, only 1:1 room needs to be renamed. It means only 1 invited user
|
|
||||||
if (1 === invitedUserIDs.length) {
|
|
||||||
var userID = invitedUserIDs[0];
|
|
||||||
|
|
||||||
// Try to resolve his displayname in presence global data
|
|
||||||
if (userID in $rootScope.presence) {
|
|
||||||
roomName = $rootScope.presence[userID].content.displayname;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
roomName = userID;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (undefined === roomName) {
|
|
||||||
// By default, use the room ID
|
|
||||||
roomName = room_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
return roomName;
|
|
||||||
};
|
|
||||||
}]);
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*
|
||||||
|
Copyright 2014 OpenMarket Ltd
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular.module('matrixFilter', [])
|
||||||
|
|
||||||
|
// Compute the room name according to information we have
|
||||||
|
.filter('mRoomName', ['$rootScope', 'matrixService', function($rootScope, matrixService) {
|
||||||
|
return function(room_id) {
|
||||||
|
var roomName;
|
||||||
|
|
||||||
|
// If there is an alias, use it
|
||||||
|
// TODO: only one alias is managed for now
|
||||||
|
var alias = matrixService.getRoomIdToAliasMapping(room_id);
|
||||||
|
if (alias) {
|
||||||
|
roomName = alias;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (undefined === roomName) {
|
||||||
|
// Else, build the name from its users
|
||||||
|
var room = $rootScope.events.rooms[room_id];
|
||||||
|
if (room) {
|
||||||
|
var room_name_event = room["m.room.name"];
|
||||||
|
|
||||||
|
if (room_name_event) {
|
||||||
|
roomName = room_name_event.content.name;
|
||||||
|
}
|
||||||
|
else if (room.members) {
|
||||||
|
// Limit the room renaming to 1:1 room
|
||||||
|
if (2 === Object.keys(room.members).length) {
|
||||||
|
for (var i in room.members) {
|
||||||
|
var member = room.members[i];
|
||||||
|
if (member.state_key !== matrixService.config().user_id) {
|
||||||
|
|
||||||
|
if (member.state_key in $rootScope.presence) {
|
||||||
|
// If the user is available in presence, use the displayname there
|
||||||
|
// as it is the most uptodate
|
||||||
|
roomName = $rootScope.presence[member.state_key].content.displayname;
|
||||||
|
}
|
||||||
|
else if (member.content.displayname) {
|
||||||
|
roomName = member.content.displayname;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
roomName = member.state_key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (1 === Object.keys(room.members).length) {
|
||||||
|
// The other member may be in the invite list, get all invited users
|
||||||
|
var invitedUserIDs = [];
|
||||||
|
for (var i in room.messages) {
|
||||||
|
var message = room.messages[i];
|
||||||
|
if ("m.room.member" === message.type && "invite" === message.membership) {
|
||||||
|
// Make sure there is no duplicate user
|
||||||
|
if (-1 === invitedUserIDs.indexOf(message.state_key)) {
|
||||||
|
invitedUserIDs.push(message.state_key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// For now, only 1:1 room needs to be renamed. It means only 1 invited user
|
||||||
|
if (1 === invitedUserIDs.length) {
|
||||||
|
var userID = invitedUserIDs[0];
|
||||||
|
|
||||||
|
// Try to resolve his displayname in presence global data
|
||||||
|
if (userID in $rootScope.presence) {
|
||||||
|
roomName = $rootScope.presence[userID].content.displayname;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
roomName = userID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (undefined === roomName) {
|
||||||
|
// By default, use the room ID
|
||||||
|
roomName = room_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
return roomName;
|
||||||
|
};
|
||||||
|
}]);
|
|
@ -29,6 +29,7 @@
|
||||||
<script src="settings/settings-controller.js"></script>
|
<script src="settings/settings-controller.js"></script>
|
||||||
<script src="user/user-controller.js"></script>
|
<script src="user/user-controller.js"></script>
|
||||||
<script src="components/matrix/matrix-service.js"></script>
|
<script src="components/matrix/matrix-service.js"></script>
|
||||||
|
<script src="components/matrix/matrix-filter.js"></script>
|
||||||
<script src="components/matrix/matrix-call.js"></script>
|
<script src="components/matrix/matrix-call.js"></script>
|
||||||
<script src="components/matrix/matrix-phone-service.js"></script>
|
<script src="components/matrix/matrix-phone-service.js"></script>
|
||||||
<script src="components/matrix/event-stream-service.js"></script>
|
<script src="components/matrix/event-stream-service.js"></script>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('RecentsController', ['matrixService', 'eventHandlerService'])
|
angular.module('RecentsController', ['matrixService', 'matrixFilter', 'eventHandlerService'])
|
||||||
.controller('RecentsController', ['$scope', 'matrixService', 'eventHandlerService',
|
.controller('RecentsController', ['$scope', 'matrixService', 'eventHandlerService',
|
||||||
function($scope, matrixService, eventHandlerService) {
|
function($scope, matrixService, eventHandlerService) {
|
||||||
$scope.rooms = {};
|
$scope.rooms = {};
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
ng-class="{'recentsRoomSelected': (room.room_id === recentsSelectedRoomID)}">
|
ng-class="{'recentsRoomSelected': (room.room_id === recentsSelectedRoomID)}">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="recentsRoomName">
|
<td class="recentsRoomName">
|
||||||
{{ room.room_id | roomName }}
|
{{ room.room_id | mRoomName }}
|
||||||
</td>
|
</td>
|
||||||
<td class="recentsRoomSummaryTS">
|
<td class="recentsRoomSummaryTS">
|
||||||
{{ (room.lastMsg.ts) | date:'MMM d HH:mm' }}
|
{{ (room.lastMsg.ts) | date:'MMM d HH:mm' }}
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
angular.module('RoomController', ['ngSanitize', 'mFileInput'])
|
angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
|
||||||
.controller('RoomController', ['$scope', '$timeout', '$routeParams', '$location', '$rootScope', 'matrixService', 'eventHandlerService', 'mFileUpload', 'mPresence', 'matrixPhoneService', 'MatrixCall',
|
.controller('RoomController', ['$scope', '$timeout', '$routeParams', '$location', '$rootScope', 'matrixService', 'eventHandlerService', 'mFileUpload', 'mPresence', 'matrixPhoneService', 'MatrixCall',
|
||||||
function($scope, $timeout, $routeParams, $location, $rootScope, matrixService, eventHandlerService, mFileUpload, mPresence, matrixPhoneService, MatrixCall) {
|
function($scope, $timeout, $routeParams, $location, $rootScope, matrixService, eventHandlerService, mFileUpload, mPresence, matrixPhoneService, MatrixCall) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div id="roomHeader">
|
<div id="roomHeader">
|
||||||
<a href ng-click="goToPage('/')"><img src="img/logo-small.png" width="100" height="43" alt="[matrix]"/></a>
|
<a href ng-click="goToPage('/')"><img src="img/logo-small.png" width="100" height="43" alt="[matrix]"/></a>
|
||||||
<div id="roomName">
|
<div id="roomName">
|
||||||
{{ room_id | roomName }}
|
{{ room_id | mRoomName }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue