|
|
|
|
|
|
|
/**
|
|
|
|
* Singleton class for notification dispatching.
|
|
|
|
*/
|
|
|
|
Ext.define('Rambox.util.Notifier', {
|
|
|
|
|
|
|
|
singleton: true,
|
|
|
|
|
|
|
|
constructor: function(config) {
|
|
|
|
|
|
|
|
config = config || {};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the notification text depending on the service type.
|
|
|
|
*
|
|
|
|
* @param view
|
|
|
|
* @param count
|
|
|
|
* @return {*}
|
|
|
|
*/
|
|
|
|
function getNotificationText(view, count) {
|
|
|
|
var text;
|
|
|
|
switch (Ext.getStore('ServicesList').getById(view.type).get('type')) {
|
|
|
|
case 'messaging':
|
|
|
|
text = 'You have ' + Ext.util.Format.plural(count, 'new message', 'new messages') + '.';
|
|
|
|
break;
|
|
|
|
case 'email':
|
|
|
|
text = 'You have ' + Ext.util.Format.plural(count, 'new email', 'new emails') + '.';
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
text = 'You have ' + Ext.util.Format.plural(count, 'new activity', 'new activities') + '.';
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return text;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dispatches a notification for a specific service.
|
|
|
|
*
|
|
|
|
* @param view The view of the service
|
|
|
|
* @param {number} count The unread count
|
|
|
|
*/
|
|
|
|
this.dispatchNotification = function(view, count) {
|
|
|
|
var text = getNotificationText(view, count);
|
|
|
|
|
|
|
|
var notification = new Notification(view.record.get('name'), {
|
|
|
|
body: text,
|
|
|
|
icon: view.tab.icon,
|
|
|
|
silent: view.record.get('muted')
|
|
|
|
});
|
|
|
|
|
|
|
|
notification.onclick = function() {
|
|
|
|
ipc.send('toggleWin', true);
|
|
|
|
Ext.cq1('app-main').setActiveTab(view);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|