Made users count auto updating. Do show it if the info is not available (ex:user has not joined the room yet)

This commit is contained in:
Emmanuel ROHEE 2014-09-10 16:46:06 +02:00
parent 30bfa911fc
commit 811716592c
2 changed files with 30 additions and 12 deletions

View file

@ -48,6 +48,9 @@ angular.module('RecentsController', ['matrixService', 'matrixFilter', 'eventHand
if ($rootScope.rooms[event.room_id]) {
$rootScope.rooms[event.room_id].lastMsg = event;
}
// Update room users count
$rootScope.rooms[event.room_id].numUsersInRoom = getUsersCountInRoom(event.room_id);
}
});
$rootScope.$on(eventHandlerService.MSG_EVENT, function(ngEvent, event, isLive) {
@ -67,6 +70,29 @@ angular.module('RecentsController', ['matrixService', 'matrixFilter', 'eventHand
});
};
/**
* Compute the room users number, ie the number of members who has joined the room.
* @param {String} room_id the room id
* @returns {undefined | Number} the room users number if available
*/
var getUsersCountInRoom = function(room_id) {
var memberCount;
var room = $rootScope.events.rooms[room_id];
if (room) {
memberCount = 0;
for (var i in room.members) {
var member = room.members[i];
if ("join" === member.membership) {
memberCount = memberCount + 1;
}
}
}
return memberCount;
}
$scope.onInit = function() {
// Init recents list only once
@ -92,17 +118,7 @@ angular.module('RecentsController', ['matrixService', 'matrixFilter', 'eventHand
$rootScope.rooms[room.room_id].lastMsg = room.messages.chunk[0];
}
var numUsersInRoom = 0;
if (room.state) {
for (var j=0; j<room.state.length; j++) {
var stateEvent = room.state[j];
if (stateEvent.type == "m.room.member" && stateEvent.content.membership == "join") {
numUsersInRoom += 1;
}
}
}
$rootScope.rooms[room.room_id].numUsersInRoom = numUsersInRoom;
$rootScope.rooms[room.room_id].numUsersInRoom = getUsersCountInRoom(room.room_id);
}
// From now, update recents from the stream

View file

@ -9,7 +9,9 @@
{{ room.room_id | mRoomName }}
</td>
<td class="recentsRoomSummaryTS">
{{ room.numUsersInRoom || '1' }} {{ room.numUsersInRoom == 1 ? 'user' : 'users' }}
<span ng-show="undefined !== room.numUsersInRoom">
{{ room.numUsersInRoom || '1' }} {{ room.numUsersInRoom == 1 ? 'user' : 'users' }}
</span>
</td>
<td class="recentsRoomSummaryTS">
{{ (room.lastMsg.ts) | date:'MMM d HH:mm' }}