main/view/websocket.js

163 lines
4.9 KiB
JavaScript

// make router usable as it
const router = window._router_;
/* (1) Emergency channel
---------------------------------------------------------*/
window.wsc_emergency = wsc.channel('emergency/31').listen(function(msg, err){
/* (1) Manage error */
if( msg == null && err != null )
return infobox.show('Erreur de connexion WebSocket@emergency ('+err+')', 'error', 3000);
/* (2) Manage wsclient error */
if( typeof msg.error != 'boolean' || msg.error !== false )
return infobox.show('Erreur de connexion WebSocket@emergency', 'warning', 3000);
/* (3) If message(s) to add */
if( msg.add != null ){
// {1} Play sound if 1msg received + not already on page //
// note: 1msg means a new message but not the page load past buffer
if( msg.add.length == 1 && router.app.$route.path != '/emergency' )
( new Audio('https://notificationsounds.com/message-tones/communication-channel-519/download/mp3') ).play();
// {2} Add messages to stack //
for( var id in msg.add ){
var tmp = msg.add[id]; // add id to data
tmp.id = id;
gstore.data.notif.emergency.data.push(tmp);
}
// if( gstore.data.notif.emergency.data[id] == null )
// gstore.data.notif.emergency.data[id] = msg.add[id];
// {3} Add notification count if not already on page //
if( router.app.$route.path != '/emergency' )
gstore.data.notif.emergency.count += msg.add.length;
}
/* (4) If message(s) to del */
if( msg.del != null ){
// {1} Rem messages from stack //
for( var id in gstore.data.notif.emergency.data )
if( msg.del[ gstore.data.notif.emergency.data[id].id ] != null )
gstore.data.notif.emergency.data[id].message = 'Message supprimé';
}
/* (5) If message(s) to update */
if( msg.upd != null ){
// {1} Update messages in stack //
for( var id in gstore.data.notif.emergency.data )
if( msg.upd[ gstore.data.notif.emergency.data[id].id ] != null )
gstore.data.notif.emergency.data[id] = msg.upd;
}
/* (6) Remove loader */
gstore.data.msg_pending.emergency = false;
}).send({name: _SERVER.session.name});
/* (2) Event channel
---------------------------------------------------------*/
window.wsc_event = wsc.channel('event/31').listen(function(msg, err){
/* (1) Manage error */
if( msg == null && err != null )
return infobox.show('Erreur de connexion WebSocket@event ('+err+')', 'error', 3000);
/* (2) Manage wsclient error */
if( typeof msg.error != 'boolean' || msg.error !== false )
return infobox.show('Erreur de connexion WebSocket@event', 'warning', 3000);
/* (3) If message(s) to add */
if( msg.add != null ){
// {1} Play sound if 1msg received + not already on page //
// note: 1msg means a new message but not the page load past buffer
if( msg.add.length == 1 && router.app.$route.path != '/event' )
( new Audio('https://notificationsounds.com/message-tones/communication-channel-519/download/mp3') ).play();
// {2} Add messages to stack //
for( var id in msg.add )
if( gstore.data.notif.event.data[id] == null )
gstore.data.notif.event.data[id] = msg.add[id];
// {3} Add notification count if not already on page //
if( router.app.$route.path != '/event' )
gstore.data.notif.event.count += msg.add.length;
}
/* (4) If message(s) to del */
if( msg.del != null ){
// {1} Rem messages from stack //
for( var id of msg.del )
if( gstore.data.notif.event.data[id] != null )
delete gstore.data.notif.event.data[id];
}
/* (5) If message(s) to update */
if( msg.upd != null ){
// {1} Update messages in stack //
for( var id of msg.upd )
if( gstore.data.notif.event.data[id] != null )
gstore.data.notif.event.data[id] = msg.upd[id];
}
/* (6) Remove loader */
gstore.data.msg_pending.event = false;
}).send({name: _SERVER.session.name});
/* (3) Message channel
---------------------------------------------------------*/
window.wsc_chat = wsc.channel('chat').listen(function(msg, err){
/* (1) Manage error */
if( msg == null && err != null )
return infobox.show('Erreur de connexion WebSocket@chat ('+err+')', 'error', 3000);
/* (2) Manage wsclient error */
if( typeof msg.error != 'boolean' || msg.error !== false )
return infobox.show('Erreur de connexion WebSocket@chat', 'warning', 3000);
/* (3) If no message -> exit */
if( msg.msg == null )
return;
/* (4) Play sound if 1msg received + not already on page */
// note: 1msg means a new message but not the page load past buffer
if( msg.msg.length == 1 && router.app.$route.path != '/inbox' )
( new Audio('https://notificationsounds.com/message-tones/communication-channel-519/download/mp3') ).play();
/* (5) Add messages to stack */
gstore.data.notif.inbox.data = gstore.data.notif.inbox.data.concat( msg.msg );
/* (6) Add notification count if not already on page */
if( router.app.$route.path != '/inbox' )
gstore.data.notif.inbox.count += msg.msg.length;
/* (7) Remove loader */
gstore.data.msg_pending.inbox = false;
}).send({name: _SERVER.session.name});