mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-29 23:36:27 +00:00
Refactor notifications service
This commit is contained in:
parent
1f4c4f595c
commit
ba3dd74756
@ -43,6 +43,18 @@ ComunicWeb.components.notifications.interface = {
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// ASync version of previous request
|
||||||
|
asyncGetAllUnread: async function(getCalls) {
|
||||||
|
return await new Promise((res, err) => {
|
||||||
|
this.getAllUnread(getCalls, (data) => {
|
||||||
|
if(data.error)
|
||||||
|
err(data.error);
|
||||||
|
else
|
||||||
|
res(data)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of unread notifications
|
* Get the list of unread notifications
|
||||||
*
|
*
|
||||||
|
@ -9,7 +9,9 @@ ComunicWeb.components.notifications.service = {
|
|||||||
/**
|
/**
|
||||||
* Last known number of notifications
|
* Last known number of notifications
|
||||||
*/
|
*/
|
||||||
last_notifs_number: -1,
|
last_total_count: -1,
|
||||||
|
count_unread_notifications: -1,
|
||||||
|
count_unread_conv: -1,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init the service
|
* Init the service
|
||||||
@ -21,71 +23,57 @@ ComunicWeb.components.notifications.service = {
|
|||||||
* @param {HTMLElement} target_conversations Optionnal, defins the target
|
* @param {HTMLElement} target_conversations Optionnal, defins the target
|
||||||
* for the number of conversations
|
* for the number of conversations
|
||||||
*/
|
*/
|
||||||
init: function(target, auto_hide, target_conversations){
|
init: async function(target, auto_hide, target_conversations){
|
||||||
|
|
||||||
//Initialize interval
|
processResponse = () => {
|
||||||
var interval = setInterval(function(){
|
|
||||||
|
|
||||||
//Auto-remove interval if the target has been removed
|
if(!target.isConnected || this.count_unread_notifications < 0 || this.count_unread_conv < 0)
|
||||||
if(!target.isConnected){
|
|
||||||
ComunicWeb.common.pageTitle.setNotificationsNumber(0);
|
|
||||||
ComunicWeb.components.notifications.service.last_notifs_number = -1;
|
|
||||||
return clearInterval(interval);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Get the number of notifications from the API
|
|
||||||
ComunicWeb.components.notifications.interface.getAllUnread(
|
|
||||||
ComunicWeb.components.calls.controller.isAvailable(), function(response){
|
|
||||||
|
|
||||||
//Continue in case of success
|
|
||||||
if(response.error)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Update the target
|
//Update the target
|
||||||
target.innerHTML = response.notifications;
|
target.innerHTML = this.count_unread_notifications;
|
||||||
|
|
||||||
//If the number of notifications equals 0, hide the target if required
|
//If the number of notifications equals 0, hide the target if required
|
||||||
if(response.notifications == 0 && auto_hide)
|
target.style.display = this.count_unread_conv == 0 && auto_hide ? "none" : "block";
|
||||||
target.style.display = "none";
|
|
||||||
else
|
|
||||||
target.style.display = "block";
|
|
||||||
|
|
||||||
//Update the number of conversations if possible too
|
//Update the number of conversations if possible too
|
||||||
if(target_conversations){
|
if(target_conversations){
|
||||||
|
|
||||||
//Update the target
|
//Update the target
|
||||||
target_conversations.innerHTML = response.conversations;
|
target_conversations.innerHTML = this.count_unread_conv;
|
||||||
|
|
||||||
//If the number of notifications equals 0, hide the target if required
|
//If the number of notifications equals 0, hide the target if required
|
||||||
if(response.conversations == 0 && auto_hide)
|
target_conversations.style.display = this.count_unread_conv == 0 && auto_hide ? "none" : "block";
|
||||||
target_conversations.style.display = "none";
|
|
||||||
else
|
|
||||||
target_conversations.style.display = "block";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sum notification number
|
//Sum notification number
|
||||||
var total_number_notifs = response.notifications + response.conversations;
|
let total_number_notifs = this.count_unread_conv + this.count_unread_notifications;
|
||||||
|
|
||||||
//Update page title too
|
//Update page title too
|
||||||
ComunicWeb.common.pageTitle.setNotificationsNumber(total_number_notifs);
|
ComunicWeb.common.pageTitle.setNotificationsNumber(total_number_notifs);
|
||||||
|
|
||||||
//Play song if required
|
//Play song if required
|
||||||
if(ComunicWeb.components.notifications.service.last_notifs_number != -1
|
if(this.last_total_count != -1 && total_number_notifs > this.last_total_count)
|
||||||
&& total_number_notifs > ComunicWeb.components.notifications.service.last_notifs_number)
|
|
||||||
ComunicWeb.components.notifications.song.play();
|
ComunicWeb.components.notifications.song.play();
|
||||||
|
|
||||||
ComunicWeb.components.notifications.service.last_notifs_number = total_number_notifs;
|
this.last_total_count = total_number_notifs;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//Process the number of calls if possible
|
// Initial load
|
||||||
if(response.calls && response.calls > 0)
|
try {
|
||||||
ComunicWeb.components.calls.controller.newCallsAvailable(response.calls);
|
const response = await ComunicWeb.components.notifications.interface.asyncGetAllUnread(false);
|
||||||
});
|
this.count_unread_conv = response.conversations;
|
||||||
|
this.count_unread_notifications = response.notifications;
|
||||||
}, 2000);
|
this.last_total_count = response.notifications + response.conversations;
|
||||||
|
|
||||||
|
processResponse();
|
||||||
|
} catch(e) {
|
||||||
|
console.error("Could not get the number of unread notifications!")
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user