From c9ee9b45c74d690f49f454b62170feb0f5483d38 Mon Sep 17 00:00:00 2001 From: Emmanuel ROHEE Date: Mon, 1 Sep 2014 16:21:13 +0200 Subject: [PATCH] Fixed presence state update. Specifically, the current user was sometimes indicated as offline --- webclient/room/room-controller.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js index c6028f874e..048350110b 100644 --- a/webclient/room/room-controller.js +++ b/webclient/room/room-controller.js @@ -201,9 +201,15 @@ angular.module('RoomController', ['ngSanitize', 'mFileInput']) } } else { - // selectively update membership else it will nuke the picture and displayname too :/ + // selectively update membership and presence else it will nuke the picture and displayname too :/ var member = $scope.members[target_user_id]; - member.content.membership = chunk.content.membership; + member.membership = chunk.content.membership; + if ("state" in chunk.content) { + member.presenceState = chunk.content.state; + } + if ("mtime_age" in chunk.content) { + member.mtime_age = chunk.content.mtime_age; + } } }; @@ -377,10 +383,22 @@ angular.module('RoomController', ['ngSanitize', 'mFileInput']) // Make recents highlight the current room $scope.recentsSelectedRoomID = $scope.room_id; - + + // Get the up-to-date the current member list + matrixService.getMemberList($scope.room_id).then( + function(response) { + for (var i = 0; i < response.data.chunk.length; i++) { + var chunk = response.data.chunk[i]; + updateMemberList(chunk); + updateMemberListPresenceAge(); + } + }, + function(error) { + $scope.feedback = "Failed get member list: " + error.data.error; + } + ); + paginate(MESSAGES_PER_PAGINATION); - - updateMemberListPresenceAge(); }; $scope.inviteUser = function(user_id) {