diff options
Diffstat (limited to 'webclient/recents')
-rw-r--r-- | webclient/recents/recents-controller.js | 7 | ||||
-rw-r--r-- | webclient/recents/recents-filter.js | 20 | ||||
-rw-r--r-- | webclient/recents/recents.html | 14 |
3 files changed, 24 insertions, 17 deletions
diff --git a/webclient/recents/recents-controller.js b/webclient/recents/recents-controller.js index ee8a41c366..6f0be18f1a 100644 --- a/webclient/recents/recents-controller.js +++ b/webclient/recents/recents-controller.js @@ -17,11 +17,14 @@ 'use strict'; angular.module('RecentsController', ['matrixService', 'matrixFilter']) -.controller('RecentsController', ['$rootScope', '$scope', 'eventHandlerService', - function($rootScope, $scope, eventHandlerService) { +.controller('RecentsController', ['$rootScope', '$scope', 'eventHandlerService', 'modelService', + function($rootScope, $scope, eventHandlerService, modelService) { // Expose the service to the view $scope.eventHandlerService = eventHandlerService; + + // retrieve all rooms and expose them + $scope.rooms = modelService.getRooms(); // $rootScope of the parent where the recents component is included can override this value // in order to highlight a specific room in the list diff --git a/webclient/recents/recents-filter.js b/webclient/recents/recents-filter.js index ef8d9897f7..39c2359967 100644 --- a/webclient/recents/recents-filter.js +++ b/webclient/recents/recents-filter.js @@ -17,7 +17,7 @@ 'use strict'; angular.module('RecentsController') -.filter('orderRecents', ["matrixService", "eventHandlerService", function(matrixService, eventHandlerService) { +.filter('orderRecents', ["matrixService", "eventHandlerService", "modelService", function(matrixService, eventHandlerService, modelService) { return function(rooms) { var user_id = matrixService.config().user_id; @@ -25,26 +25,30 @@ angular.module('RecentsController') // The key, room_id, is already in value objects var filtered = []; angular.forEach(rooms, function(room, room_id) { - + room.recent = {}; + var meEvent = room.current_room_state.state("m.room.member", user_id); // Show the room only if the user has joined it or has been invited // (ie, do not show it if he has been banned) - var member = eventHandlerService.getMember(room_id, user_id); - if (member && ("invite" === member.membership || "join" === member.membership)) { - + var member = modelService.getMember(room_id, user_id); + room.recent.me = member; + if (member && ("invite" === member.content.membership || "join" === member.content.membership)) { + if ("invite" === member.content.membership) { + room.recent.inviter = member.user_id; + } // Count users here // TODO: Compute it directly in eventHandlerService - room.numUsersInRoom = eventHandlerService.getUsersCountInRoom(room_id); + room.recent.numUsersInRoom = eventHandlerService.getUsersCountInRoom(room_id); filtered.push(room); } - else if ("invite" === room.membership) { + else if (meEvent && "invite" === meEvent.content.membership) { // The only information we have about the room is that the user has been invited filtered.push(room); } }); // And time sort them - // The room with the lastest message at first + // The room with the latest message at first filtered.sort(function (roomA, roomB) { var lastMsgRoomA = eventHandlerService.getLastMessage(roomA.room_id, true); diff --git a/webclient/recents/recents.html b/webclient/recents/recents.html index a52b215c7e..7297e23703 100644 --- a/webclient/recents/recents.html +++ b/webclient/recents/recents.html @@ -1,16 +1,16 @@ <div ng-controller="RecentsController"> <table class="recentsTable"> - <tbody ng-repeat="(index, room) in events.rooms | orderRecents" + <tbody ng-repeat="(index, room) in rooms | orderRecents" ng-click="goToPage('room/' + (room.room_alias ? room.room_alias : room.room_id) )" class="recentsRoom" ng-class="{'recentsRoomSelected': (room.room_id === recentsSelectedRoomID)}"> <tr> - <td ng-class="room['m.room.join_rules'].content.join_rule == 'public' ? 'recentsRoomName recentsPublicRoom' : 'recentsRoomName'"> + <td ng-class="room.current_room_state.state('m.room.join_rules').content.join_rule == 'public' ? 'recentsRoomName recentsPublicRoom' : 'recentsRoomName'"> {{ room.room_id | mRoomName }} </td> <td class="recentsRoomSummaryUsersCount"> - <span ng-show="undefined !== room.numUsersInRoom"> - {{ room.numUsersInRoom || '1' }} {{ room.numUsersInRoom == 1 ? 'user' : 'users' }} + <span ng-show="undefined !== room.recent.numUsersInRoom"> + {{ room.recent.numUsersInRoom || '1' }} {{ room.recent.numUsersInRoom == 1 ? 'user' : 'users' }} </span> </td> <td class="recentsRoomSummaryTS"> @@ -27,11 +27,11 @@ <tr> <td colspan="3" class="recentsRoomSummary"> - <div ng-show="room.membership === 'invite'"> - {{ room.inviter | mUserDisplayName: room.room_id }} invited you + <div ng-show="room.recent.me.content.membership === 'invite'"> + {{ room.recent.inviter | mUserDisplayName: room.room_id }} invited you </div> - <div ng-hide="room.membership === 'invite'" ng-switch="lastMsg.type"> + <div ng-hide="room.recent.me.membership === 'invite'" ng-switch="lastMsg.type"> <div ng-switch-when="m.room.member"> <span ng-switch="lastMsg.changedKey"> <span ng-switch-when="membership"> |