Fixed presence state update. Specifically, the current user was sometimes indicated as offline

paul/schema_breaking_changes
Emmanuel ROHEE 2014-09-01 16:21:13 +02:00
parent 02f4e3b3ff
commit c9ee9b45c7
1 changed files with 23 additions and 5 deletions

View File

@ -201,9 +201,15 @@ angular.module('RoomController', ['ngSanitize', 'mFileInput'])
} }
} }
else { 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]; 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;
}
} }
}; };
@ -378,9 +384,21 @@ angular.module('RoomController', ['ngSanitize', 'mFileInput'])
// Make recents highlight the current room // Make recents highlight the current room
$scope.recentsSelectedRoomID = $scope.room_id; $scope.recentsSelectedRoomID = $scope.room_id;
paginate(MESSAGES_PER_PAGINATION); // 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(); updateMemberListPresenceAge();
}
},
function(error) {
$scope.feedback = "Failed get member list: " + error.data.error;
}
);
paginate(MESSAGES_PER_PAGINATION);
}; };
$scope.inviteUser = function(user_id) { $scope.inviteUser = function(user_id) {