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.
doushio/client/notify.js

58 lines
1.2 KiB

(function () {
// Should be part of a greater thread model
var Unread = new Backbone.Model({unreadCount: 0});
var normalTitle = document.title;
window.addEventListener('focus', function () {
Unread.set({blurred: false, unreadCount: 0, reply: false});
}, false);
window.addEventListener('blur', function () {
Unread.set({blurred: true, unreadCount: 0, reply: false});
}, false);
connSM.on('synced', function () {
Unread.set('alert', false);
});
function dropped() {
Unread.set('alert', true);
}
connSM.on('dropped', dropped);
connSM.on('desynced', dropped);
Backbone.on('repliedToMe', function () {
Unread.set({reply: true});
});
Backbone.on('afterInsert', function (model) {
if (model && model.get('mine'))
return; // It's ours, don't notify unread
if (Unread.get('blurred'))
Unread.set('unreadCount', Unread.get('unreadCount') + 1);
});
Unread.on('change', function (model) {
var attrs = model.attributes;
if (!attrs.blurred) {
document.title = normalTitle;
return;
}
if (attrs.alert) {
document.title = '--- ' + normalTitle;
return;
}
var prefix = '';
if (attrs.reply)
prefix += '>> ';
if (attrs.unreadCount)
prefix += '(' + attrs.unreadCount + ') ';
document.title = prefix + normalTitle;
});
})();