diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js index dc00d83f33..9d33b6715e 100644 --- a/webclient/components/matrix/event-handler-service.js +++ b/webclient/components/matrix/event-handler-service.js @@ -86,18 +86,6 @@ function(matrixService, $rootScope, $q, $timeout, mPresence, notificationService } $rootScope.events.rooms[room_id].membership = room.membership; } - - // ========================================= - var __room = modelService.getRoom(room_id); - if (room) { // /initialSync data - __room.current_room_state.storeStateEvents(room.state); - __room.current_room_state.pagination_token = room.messages.end; - - __room.old_room_state.storeStateEvents(room.state); - __room.old_room_state.pagination_token = room.messages.start; - - $rootScope["debug_"+room_id] = __room; - } }; var resetRoomMessages = function(room_id) { @@ -621,12 +609,44 @@ function(matrixService, $rootScope, $q, $timeout, mPresence, notificationService var room = rooms[i]; this.initRoom(room); + + // FIXME: This is ming: the HS should be sending down the m.room.member + // event for the invite in .state but it isn't, so fudge it for now. + if (room.inviter && room.membership === "invite") { + var me = matrixService.config().user_id; + var fakeEvent = { + event_id: "__FAKE__" + room.room_id, + user_id: room.inviter, + origin_server_ts: 0, + room_id: room.room_id, + state_key: me, + type: "m.room.member", + content: { + membership: "invite" + } + }; + if (!room.state) { + room.state = []; + } + room.state.push(fakeEvent); + console.log("RECV /initialSync invite >> "+JSON.stringify(fakeEvent)); + } + + // ========================================= + var __room = modelService.getRoom(room.room_id); + __room.current_room_state.storeStateEvents(room.state); + __room.old_room_state.storeStateEvents(room.state); + + + if ("messages" in room) { this.handleRoomMessages(room.room_id, room.messages, false); + __room.current_room_state.pagination_token = room.messages.end; + __room.old_room_state.pagination_token = room.messages.start; } - if ("state" in room) { + if ("state" in room) { // TODO FIXME remove this. this.handleEvents(room.state, false, true); } } diff --git a/webclient/components/matrix/model-service.js b/webclient/components/matrix/model-service.js index 26349f1461..ff6abfe422 100644 --- a/webclient/components/matrix/model-service.js +++ b/webclient/components/matrix/model-service.js @@ -100,9 +100,15 @@ angular.module('modelService', []) storeStateEvent: function storeState(event) { this.state_events[event.type + event.state_key] = event; + if (event.type === "m.room.member") { + this.members[event.state_key] = event; + } }, storeStateEvents: function storeState(events) { + if (!events) { + return; + } for (var i=0; i - -
+ {{ room.room_id | mRoomName }} - {{ room.numUsersInRoom || '1' }} {{ room.numUsersInRoom == 1 ? 'user' : 'users' }} + {{ room.recent.numUsersInRoom || '1' }} {{ room.recent.numUsersInRoom == 1 ? 'user' : 'users' }} @@ -27,11 +27,11 @@
-
- {{ room.inviter | mUserDisplayName: room.room_id }} invited you +
+ {{ room.recent.inviter | mUserDisplayName: room.room_id }} invited you
-
+