Move getLastMessage to modelService.

This commit is contained in:
Kegan Dougal 2014-11-17 10:04:36 +00:00
parent fbf8003237
commit 547adda446
5 changed files with 31 additions and 31 deletions

View File

@ -501,30 +501,7 @@ function(matrixService, $rootScope, $q, $timeout, $filter, mPresence, notificati
eventContainsBingWord: function(event) { eventContainsBingWord: function(event) {
return containsBingWord(event); return containsBingWord(event);
},
/**
* Return the last message event of a room
* @param {String} room_id the room id
* @param {Boolean} filterFake true to not take into account fake messages
* @returns {undefined | Event} the last message event if available
*/
getLastMessage: function(room_id, filterEcho) {
var lastMessage;
var events = modelService.getRoom(room_id).events;
for (var i = events.length - 1; i >= 0; i--) {
var message = events[i];
if (!filterEcho || undefined === message.echo_msg_state) {
lastMessage = message;
break;
}
}
return lastMessage;
} }
}; };
}]); }]);

View File

@ -307,6 +307,29 @@ angular.module('modelService', [])
} }
return memberCount; return memberCount;
},
/**
* Return the last message event of a room
* @param {String} room_id the room id
* @param {Boolean} filterFake true to not take into account fake messages
* @returns {undefined | Event} the last message event if available
*/
getLastMessage: function(room_id, filterEcho) {
var lastMessage;
var events = this.getRoom(room_id).events;
for (var i = events.length - 1; i >= 0; i--) {
var message = events[i];
// TODO: define a better marker than echo_msg_state
if (!filterEcho || undefined === message.echo_msg_state) {
lastMessage = message;
break;
}
}
return lastMessage;
} }
}; };

View File

@ -17,11 +17,11 @@
'use strict'; 'use strict';
angular.module('RecentsController', ['matrixService', 'matrixFilter']) angular.module('RecentsController', ['matrixService', 'matrixFilter'])
.controller('RecentsController', ['$rootScope', '$scope', 'eventHandlerService', 'modelService', 'recentsService', .controller('RecentsController', ['$rootScope', '$scope', 'modelService', 'recentsService',
function($rootScope, $scope, eventHandlerService, modelService, recentsService) { function($rootScope, $scope, modelService, recentsService) {
// Expose the service to the view // Expose the service to the view
$scope.eventHandlerService = eventHandlerService; $scope.modelService = modelService;
// retrieve all rooms and expose them // retrieve all rooms and expose them
$scope.rooms = modelService.getRooms(); $scope.rooms = modelService.getRooms();

View File

@ -17,7 +17,7 @@
'use strict'; 'use strict';
angular.module('RecentsController') angular.module('RecentsController')
.filter('orderRecents', ["matrixService", "eventHandlerService", "modelService", function(matrixService, eventHandlerService, modelService) { .filter('orderRecents', ["matrixService", "modelService", function(matrixService, modelService) {
return function(rooms) { return function(rooms) {
var user_id = matrixService.config().user_id; var user_id = matrixService.config().user_id;
@ -39,7 +39,7 @@ angular.module('RecentsController')
room.recent.inviter = member.user_id; room.recent.inviter = member.user_id;
} }
// Count users here // Count users here
// TODO: Compute it directly in eventHandlerService // TODO: Compute it directly in modelService
room.recent.numUsersInRoom = modelService.getUserCountInRoom(room_id); room.recent.numUsersInRoom = modelService.getUserCountInRoom(room_id);
filtered.push(room); filtered.push(room);
@ -54,8 +54,8 @@ angular.module('RecentsController')
// The room with the latest message at first // The room with the latest message at first
filtered.sort(function (roomA, roomB) { filtered.sort(function (roomA, roomB) {
var lastMsgRoomA = eventHandlerService.getLastMessage(roomA.room_id, true); var lastMsgRoomA = modelService.getLastMessage(roomA.room_id, true);
var lastMsgRoomB = eventHandlerService.getLastMessage(roomB.room_id, true); var lastMsgRoomB = modelService.getLastMessage(roomB.room_id, true);
// Invite message does not have a body message nor ts // Invite message does not have a body message nor ts
// Puth them at the top of the list // Puth them at the top of the list

View File

@ -16,7 +16,7 @@
<td class="recentsRoomSummaryTS"> <td class="recentsRoomSummaryTS">
<!-- Use a temp var as alias to the last room message. <!-- Use a temp var as alias to the last room message.
Declaring it in this way ensures the data-binding --> Declaring it in this way ensures the data-binding -->
{{ lastMsg = eventHandlerService.getLastMessage(room.room_id, true);"" }} {{ lastMsg = modelService.getLastMessage(room.room_id, true);"" }}
{{ (lastMsg.origin_server_ts) | date:'MMM d HH:mm' }} {{ (lastMsg.origin_server_ts) | date:'MMM d HH:mm' }}