2 files changed, 28 insertions, 6 deletions
diff --git a/syweb/webclient/recents/recents-controller.js b/syweb/webclient/recents/recents-controller.js
index 6f0be18f1a..062d106018 100644
--- a/syweb/webclient/recents/recents-controller.js
+++ b/syweb/webclient/recents/recents-controller.js
@@ -25,10 +25,32 @@ angular.module('RecentsController', ['matrixService', 'matrixFilter'])
// retrieve all rooms and expose them
$scope.rooms = modelService.getRooms();
+
+ if (!$rootScope.unreadMessages) {
+ $rootScope.unreadMessages = {
+ // room_id: <number>
+ };
+ }
- // $rootScope of the parent where the recents component is included can override this value
- // in order to highlight a specific room in the list
- $rootScope.recentsSelectedRoomID;
+ // $rootScope.recentsSelectedRoomID is used in the html, and is set by room-controller.
+
+
+ $scope.selectRoom = function(room) {
+ if ($rootScope.unreadMessages[room.room_id]) {
+ $rootScope.unreadMessages[room.room_id] = 0;
+ }
+ $rootScope.goToPage('room/' + (room.room_alias ? room.room_alias : room.room_id) );
+ };
+
+ $scope.$on(eventHandlerService.MSG_EVENT, function(ngEvent, event, isLive) {
+ if (isLive && event.room_id !== $rootScope.recentsSelectedRoomID) {
+ if (!$rootScope.unreadMessages[event.room_id]) {
+ $rootScope.unreadMessages[event.room_id] = 0;
+ }
+ $rootScope.unreadMessages[event.room_id] += 1;
+ console.log("sel="+$rootScope.recentsSelectedRoomID+" unread:"+JSON.stringify($rootScope.unreadMessages, undefined, 2));
+ }
+ });
}]);
diff --git a/syweb/webclient/recents/recents.html b/syweb/webclient/recents/recents.html
index 7297e23703..386edb1417 100644
--- a/syweb/webclient/recents/recents.html
+++ b/syweb/webclient/recents/recents.html
@@ -1,9 +1,9 @@
<div ng-controller="RecentsController">
<table class="recentsTable">
<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)}">
+ ng-click="selectRoom(room)"
+ class="recentsRoom"
+ ng-class="{'recentsRoomSelected': (room.room_id === recentsSelectedRoomID), 'recentsRoomUnread': (unreadMessages[room.room_id])}">
<tr>
<td ng-class="room.current_room_state.state('m.room.join_rules').content.join_rule == 'public' ? 'recentsRoomName recentsPublicRoom' : 'recentsRoomName'">
{{ room.room_id | mRoomName }}
|