forked from flanchan/doushio
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.
58 lines
1.2 KiB
58 lines
1.2 KiB
6 years ago
|
(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;
|
||
|
});
|
||
|
|
||
|
})();
|