mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-15 06:05:30 -04:00
Migrate unread messages logic to recentsService.
This commit is contained in:
parent
96cd467cfa
commit
99c445a6d6
2 changed files with 36 additions and 21 deletions
|
@ -27,15 +27,31 @@ This is preferable to polluting the $rootScope with recents specific info, and
|
|||
makes the dependency on this shared state *explicit*.
|
||||
*/
|
||||
angular.module('recentsService', [])
|
||||
.factory('recentsService', ['$rootScope', function($rootScope) {
|
||||
.factory('recentsService', ['$rootScope', 'eventHandlerService', function($rootScope, eventHandlerService) {
|
||||
// notify listeners when variables in the service are updated. We need to do
|
||||
// this since we do not tie them to any scope.
|
||||
var BROADCAST_SELECTED_ROOM_ID = "recentsService:BROADCAST_SELECTED_ROOM_ID";
|
||||
var BROADCAST_SELECTED_ROOM_ID = "recentsService:BROADCAST_SELECTED_ROOM_ID(room_id)";
|
||||
var selectedRoomId = undefined;
|
||||
|
||||
var BROADCAST_UNREAD_MESSAGES = "recentsService:BROADCAST_UNREAD_MESSAGES(room_id, unreadCount)";
|
||||
var unreadMessages = {
|
||||
// room_id: <number>
|
||||
};
|
||||
|
||||
// listen for new unread messages
|
||||
$rootScope.$on(eventHandlerService.MSG_EVENT, function(ngEvent, event, isLive) {
|
||||
if (isLive && event.room_id !== selectedRoomId) {
|
||||
if (!unreadMessages[event.room_id]) {
|
||||
unreadMessages[event.room_id] = 0;
|
||||
}
|
||||
unreadMessages[event.room_id] += 1;
|
||||
$rootScope.$broadcast(BROADCAST_UNREAD_MESSAGES, event.room_id, unreadMessages[event.room_id]);
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
BROADCAST_SELECTED_ROOM_ID: BROADCAST_SELECTED_ROOM_ID,
|
||||
BROADCAST_UNREAD_MESSAGES: BROADCAST_UNREAD_MESSAGES,
|
||||
|
||||
getSelectedRoomId: function() {
|
||||
return selectedRoomId;
|
||||
|
@ -44,6 +60,17 @@ angular.module('recentsService', [])
|
|||
setSelectedRoomId: function(room_id) {
|
||||
selectedRoomId = room_id;
|
||||
$rootScope.$broadcast(BROADCAST_SELECTED_ROOM_ID, room_id);
|
||||
},
|
||||
|
||||
getUnreadMessages: function() {
|
||||
return unreadMessages;
|
||||
},
|
||||
|
||||
markAsRead: function(room_id) {
|
||||
if (unreadMessages[room_id]) {
|
||||
unreadMessages[room_id] = 0;
|
||||
}
|
||||
$rootScope.$broadcast(BROADCAST_UNREAD_MESSAGES, room_id, 0);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue