Keep track of people's presence and query that when we update the members list.

This commit is contained in:
Erik Johnston 2014-08-22 10:50:38 +01:00
parent 74c90f7815
commit 6118a102c1
2 changed files with 10 additions and 3 deletions

View File

@ -35,6 +35,8 @@ angular.module('eventHandlerService', [])
$rootScope.events = { $rootScope.events = {
rooms: {}, // will contain roomId: { messages:[], members:{userid1: event} } rooms: {}, // will contain roomId: { messages:[], members:{userid1: event} }
}; };
$rootScope.presence = {};
var initRoom = function(room_id) { var initRoom = function(room_id) {
if (!(room_id in $rootScope.events.rooms)) { if (!(room_id in $rootScope.events.rooms)) {
@ -91,6 +93,7 @@ angular.module('eventHandlerService', [])
}; };
var handlePresence = function(event, isLiveEvent) { var handlePresence = function(event, isLiveEvent) {
$rootScope.presence[event.content.user_id] = event;
$rootScope.$broadcast(PRESENCE_EVENT, event, isLiveEvent); $rootScope.$broadcast(PRESENCE_EVENT, event, isLiveEvent);
}; };

View File

@ -15,8 +15,8 @@ limitations under the License.
*/ */
angular.module('RoomController', ['ngSanitize', 'mUtilities']) angular.module('RoomController', ['ngSanitize', 'mUtilities'])
.controller('RoomController', ['$scope', '$http', '$timeout', '$routeParams', '$location', 'matrixService', 'eventStreamService', 'eventHandlerService', 'mFileUpload', 'mUtilities', .controller('RoomController', ['$scope', '$http', '$timeout', '$routeParams', '$location', 'matrixService', 'eventStreamService', 'eventHandlerService', 'mFileUpload', 'mUtilities', '$rootScope',
function($scope, $http, $timeout, $routeParams, $location, matrixService, eventStreamService, eventHandlerService, mFileUpload, mUtilities) { function($scope, $http, $timeout, $routeParams, $location, matrixService, eventStreamService, eventHandlerService, mFileUpload, mUtilities, $rootScope) {
'use strict'; 'use strict';
var MESSAGES_PER_PAGINATION = 30; var MESSAGES_PER_PAGINATION = 30;
var THUMBNAIL_SIZE = 320; var THUMBNAIL_SIZE = 320;
@ -199,6 +199,10 @@ angular.module('RoomController', ['ngSanitize', 'mUtilities'])
); );
}); });
*/ */
if (chunk.target_user_id in $rootScope.presence) {
updatePresence($rootScope.presence[chunk.target_user_id]);
}
} }
else { else {
// selectively update membership else it will nuke the picture and displayname too :/ // selectively update membership else it will nuke the picture and displayname too :/
@ -265,7 +269,7 @@ angular.module('RoomController', ['ngSanitize', 'mUtilities'])
$scope.onInit = function() { $scope.onInit = function() {
console.log("onInit"); console.log("onInit");
// Does the room ID provided in the URL? // Does the room ID provided in the URL?
var room_id_or_alias; var room_id_or_alias;
if ($routeParams.room_id_or_alias) { if ($routeParams.room_id_or_alias) {