diff options
-rw-r--r-- | syweb/webclient/components/matrix/event-handler-service.js | 25 | ||||
-rw-r--r-- | syweb/webclient/components/matrix/model-service.js | 23 | ||||
-rw-r--r-- | syweb/webclient/recents/recents-filter.js | 2 | ||||
-rw-r--r-- | syweb/webclient/test/unit/event-handler-service.spec.js | 42 | ||||
-rw-r--r-- | syweb/webclient/test/unit/model-service.spec.js | 34 |
5 files changed, 61 insertions, 65 deletions
diff --git a/syweb/webclient/components/matrix/event-handler-service.js b/syweb/webclient/components/matrix/event-handler-service.js index 8a32d06696..a41aaa5778 100644 --- a/syweb/webclient/components/matrix/event-handler-service.js +++ b/syweb/webclient/components/matrix/event-handler-service.js @@ -523,29 +523,8 @@ function(matrixService, $rootScope, $q, $timeout, $filter, mPresence, notificati } return lastMessage; - }, - - /** - * 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 - */ - getUsersCountInRoom: function(room_id) { - var memberCount; - - var room = modelService.getRoom(room_id); - memberCount = 0; - for (var i in room.current_room_state.members) { - if (!room.current_room_state.members.hasOwnProperty(i)) continue; - - var member = room.current_room_state.members[i].event; - - if ("join" === member.content.membership) { - memberCount = memberCount + 1; - } - } - - return memberCount; } + + }; }]); diff --git a/syweb/webclient/components/matrix/model-service.js b/syweb/webclient/components/matrix/model-service.js index b4d59e7324..4f5d888b05 100644 --- a/syweb/webclient/components/matrix/model-service.js +++ b/syweb/webclient/components/matrix/model-service.js @@ -284,6 +284,29 @@ angular.module('modelService', []) } } return powerLevel; + }, + + /** + * 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 + */ + getUserCountInRoom: function(room_id) { + var memberCount; + + var room = this.getRoom(room_id); + memberCount = 0; + for (var i in room.current_room_state.members) { + if (!room.current_room_state.members.hasOwnProperty(i)) continue; + + var member = room.current_room_state.members[i].event; + + if ("join" === member.content.membership) { + memberCount = memberCount + 1; + } + } + + return memberCount; } }; diff --git a/syweb/webclient/recents/recents-filter.js b/syweb/webclient/recents/recents-filter.js index cfbc6f4bd8..00304f84dc 100644 --- a/syweb/webclient/recents/recents-filter.js +++ b/syweb/webclient/recents/recents-filter.js @@ -40,7 +40,7 @@ angular.module('RecentsController') } // Count users here // TODO: Compute it directly in eventHandlerService - room.recent.numUsersInRoom = eventHandlerService.getUsersCountInRoom(room_id); + room.recent.numUsersInRoom = modelService.getUserCountInRoom(room_id); filtered.push(room); } diff --git a/syweb/webclient/test/unit/event-handler-service.spec.js b/syweb/webclient/test/unit/event-handler-service.spec.js index c17cdb8715..5eb6fe10ab 100644 --- a/syweb/webclient/test/unit/event-handler-service.spec.js +++ b/syweb/webclient/test/unit/event-handler-service.spec.js @@ -26,45 +26,5 @@ describe('EventHandlerService', function() { scope = $rootScope; })); - it('should be able to get the number of joined users in a room', inject( - function(eventHandlerService) { - var roomId = "!foo:matrix.org"; - // set mocked data - modelService.getRoom = function(roomId) { - return { - room_id: roomId, - current_room_state: { - members: { - "@adam:matrix.org": { - event: { - content: { membership: "join" }, - user_id: "@adam:matrix.org" - } - }, - "@beth:matrix.org": { - event: { - content: { membership: "invite" }, - user_id: "@beth:matrix.org" - } - }, - "@charlie:matrix.org": { - event: { - content: { membership: "join" }, - user_id: "@charlie:matrix.org" - } - }, - "@danice:matrix.org": { - event: { - content: { membership: "leave" }, - user_id: "@danice:matrix.org" - } - } - } - } - }; - } - - var num = eventHandlerService.getUsersCountInRoom(roomId); - expect(num).toEqual(2); - })); + }); diff --git a/syweb/webclient/test/unit/model-service.spec.js b/syweb/webclient/test/unit/model-service.spec.js index 4639a6984c..d92930e2e0 100644 --- a/syweb/webclient/test/unit/model-service.spec.js +++ b/syweb/webclient/test/unit/model-service.spec.js @@ -193,4 +193,38 @@ describe('ModelService', function() { })); + + it('should be able to get the number of joined users in a room', inject( + function(modelService) { + var roomId = "!foo:matrix.org"; + // set mocked data + var room = modelService.getRoom(roomId); + room.current_room_state.storeStateEvent({ + content: { membership: "join" }, + user_id: "@adam:matrix.org", + state_key: "@adam:matrix.org", + type: "m.room.member" + }); + room.current_room_state.storeStateEvent({ + content: { membership: "invite" }, + user_id: "@adam:matrix.org", + state_key: "@beth:matrix.org", + type: "m.room.member" + }); + room.current_room_state.storeStateEvent({ + content: { membership: "join" }, + user_id: "@charlie:matrix.org", + state_key: "@charlie:matrix.org", + type: "m.room.member" + }); + room.current_room_state.storeStateEvent({ + content: { membership: "leave" }, + user_id: "@danice:matrix.org", + state_key: "@danice:matrix.org", + type: "m.room.member" + }); + + var num = modelService.getUserCountInRoom(roomId); + expect(num).toEqual(2); + })); }); |