windowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinux
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.7 KiB
75 lines
1.7 KiB
/** |
|
* Singleton class to handle the global unread counter. |
|
*/ |
|
Ext.define('Rambox.util.UnreadCounter', { |
|
|
|
singleton: true, |
|
|
|
constructor: function(config) { |
|
|
|
config = config || {}; |
|
|
|
/** |
|
* Map for storing the global unread count. |
|
* service id -> unread count |
|
* |
|
* @type {Map} |
|
*/ |
|
var unreadCountByService = new Map(); |
|
|
|
/** |
|
* Holds the global unread count for internal usage. |
|
* |
|
* @type {number} |
|
*/ |
|
var totalUnreadCount = 0; |
|
|
|
/** |
|
* Sets the application's unread count to tracked unread count. |
|
*/ |
|
function updateAppUnreadCounter() { |
|
Rambox.app.setTotalNotifications(totalUnreadCount); |
|
} |
|
|
|
/** |
|
* Returns the global unread count. |
|
* |
|
* @return {number} |
|
*/ |
|
this.getTotalUnreadCount = function() { |
|
return totalUnreadCount; |
|
}; |
|
|
|
/** |
|
* Sets the global unread count for a specific service. |
|
* |
|
* @param {*} id Id of the service to set the global unread count for. |
|
* @param {number} unreadCount The global unread count for the service. |
|
*/ |
|
this.setUnreadCountForService = function(id, unreadCount) { |
|
unreadCount = parseInt(unreadCount, 10); |
|
|
|
if (unreadCountByService.has(id)) { |
|
totalUnreadCount -= unreadCountByService.get(id); |
|
} |
|
totalUnreadCount += unreadCount; |
|
unreadCountByService.set(id, unreadCount); |
|
|
|
updateAppUnreadCounter(); |
|
}; |
|
|
|
/** |
|
* Clears the global unread count for a specific service. |
|
* |
|
* @param {*} id Id of the service to clear the global unread count for. |
|
*/ |
|
this.clearUnreadCountForService = function(id) { |
|
if (unreadCountByService.has(id)) { |
|
totalUnreadCount -= unreadCountByService.get(id); |
|
} |
|
unreadCountByService['delete'](id); |
|
|
|
updateAppUnreadCounter(); |
|
} |
|
} |
|
});
|
|
|