mirror of
https://github.com/YunoHost-Apps/movim_ynh.git
synced 2024-09-03 19:46:19 +02:00
142 lines
4.1 KiB
JavaScript
142 lines
4.1 KiB
JavaScript
var DesktopNotification = Notification;
|
|
|
|
var Notification = {
|
|
inhibed : false,
|
|
focused : false,
|
|
tab_counter1 : 0,
|
|
tab_counter2 : 0,
|
|
tab_counter1_key : 'chat',
|
|
tab_counter2_key : 'news',
|
|
document_title : document.title,
|
|
notifs_key : '',
|
|
favicon : null,
|
|
|
|
inhibit : function(sec) {
|
|
Notification.inhibed = true;
|
|
|
|
if(sec == null) sec = 5;
|
|
|
|
setTimeout(function() {
|
|
Notification.inhibed = false;
|
|
},
|
|
sec*1000);
|
|
},
|
|
refresh : function(keys) {
|
|
var counters = document.querySelectorAll('.counter');
|
|
for(i = 0; i < counters.length; i++) {
|
|
var n = counters[i];
|
|
if(n.dataset.key != null
|
|
&& keys[n.dataset.key] != null) {
|
|
n.innerHTML = keys[n.dataset.key];
|
|
}
|
|
}
|
|
|
|
for(var key in keys) {
|
|
var counter = keys[key];
|
|
Notification.setTab(key, counter);
|
|
}
|
|
|
|
Notification.displayTab();
|
|
},
|
|
counter : function(key, counter) {
|
|
var counters = document.querySelectorAll('.counter');
|
|
for(i = 0; i < counters.length; i++) {
|
|
var n = counters[i];
|
|
if(n.dataset.key != null
|
|
&& n.dataset.key == key) {
|
|
n.innerHTML = counter;
|
|
}
|
|
}
|
|
|
|
Notification.setTab(key, counter);
|
|
Notification.displayTab();
|
|
},
|
|
setTab : function(key, counter) {
|
|
if(counter == '') counter = 0;
|
|
|
|
if(Notification.tab_counter1_key == key) {
|
|
Notification.tab_counter1 = counter;
|
|
}
|
|
if(Notification.tab_counter2_key == key) {
|
|
Notification.tab_counter2 = counter;
|
|
}
|
|
},
|
|
displayTab : function() {
|
|
if(Notification.tab_counter1 == 0 && Notification.tab_counter2 == 0) {
|
|
document.title = Notification.document_title;
|
|
Notification.favicon.badge(0);
|
|
} else {
|
|
Notification.favicon.badge(Notification.tab_counter1 + Notification.tab_counter2);
|
|
document.title = '(' + Notification.tab_counter1 + '/' + Notification.tab_counter2 + ') ' + Notification.document_title;
|
|
}
|
|
},
|
|
current : function(key) {
|
|
Notification.notifs_key = key;
|
|
Notification_ajaxCurrent(Notification.notifs_key);
|
|
},
|
|
toast : function(html) {
|
|
target = document.getElementById('toast');
|
|
|
|
if(target) {
|
|
target.innerHTML = html;
|
|
}
|
|
|
|
setTimeout(function() {
|
|
target = document.getElementById('toast');
|
|
target.innerHTML = '';
|
|
},
|
|
3000);
|
|
},
|
|
snackbar : function(html, time) {
|
|
if(Notification.inhibed == true) return;
|
|
|
|
target = document.getElementById('snackbar');
|
|
|
|
if(target) {
|
|
target.innerHTML = html;
|
|
}
|
|
|
|
setTimeout(function() {
|
|
target = document.getElementById('snackbar');
|
|
target.innerHTML = '';
|
|
},
|
|
time*1000);
|
|
},
|
|
desktop : function(title, body, picture) {
|
|
if(Notification.inhibed == true
|
|
|| Notification.focused) return;
|
|
console.log(DesktopNotification);
|
|
var notification = new DesktopNotification(title, { icon: picture, body: body });
|
|
}
|
|
}
|
|
|
|
MovimWebsocket.attach(function() {
|
|
Notification.favicon = new Favico({
|
|
animation: 'none',
|
|
fontStyle: 'normal',
|
|
bgColor: '#FF5722'
|
|
});
|
|
Notification.document_title = document.title;
|
|
Notification_ajaxGet();
|
|
Notification.current(Notification.notifs_key);
|
|
});
|
|
|
|
document.onblur = function() {
|
|
Notification.focused = false;
|
|
Notification_ajaxCurrent('blurred');
|
|
}
|
|
document.onfocus = function() {
|
|
Notification.focused = true;
|
|
Notification.current(Notification.notifs_key);
|
|
Notification_ajaxClear(Notification.notifs_key);
|
|
}
|
|
|
|
|
|
window.addEventListener('load', function () {
|
|
DesktopNotification.requestPermission(function (status) {
|
|
// This allows to use Notification.permission with Chrome/Safari
|
|
if(DesktopNotification.permission !== status) {
|
|
DesktopNotification.permission = status;
|
|
}
|
|
});
|
|
});
|