From ab1b3080c75416def847cf2007775401b4199edc Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 7 Dec 2017 22:16:15 +0100 Subject: [PATCH] upd: view.websocket (now managing 'add', 'del', 'upd') --- view/websocket.js | 98 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 72 insertions(+), 26 deletions(-) diff --git a/view/websocket.js b/view/websocket.js index 6343273..b73de39 100644 --- a/view/websocket.js +++ b/view/websocket.js @@ -15,27 +15,50 @@ window.wsc_emergency = wsc.channel('emergency/31').listen(function(msg, err){ if( typeof msg.error != 'boolean' || msg.error !== false ) return infobox.show('Erreur de connexion WebSocket@emergency', 'warning', 3000); - /* (3) If no message -> exit */ - if( msg.data == null ) - return; + /* (3) If message(s) to add */ + if( msg.add != null ){ - /* (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.data.length == 1 && router.app.$route.path != '/emergency' ) - ( new Audio('https://notificationsounds.com/message-tones/communication-channel-519/download/mp3') ).play(); + // {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(); - /* (5) Add messages to stack */ - gstore.data.notif.emergency.data = gstore.data.notif.emergency.data.concat( msg.data ); + // {2} Add messages to stack // + gstore.data.notif.emergency.data = gstore.data.notif.emergency.data.concat( msg.add ); - /* (6) Add notification count if not already on page */ - if( router.app.$route.path != '/emergency' ) - gstore.data.notif.emergency.count += msg.data.length; + // {3} Add notification count if not already on page // + if( router.app.$route.path != '/emergency' ) + gstore.data.notif.emergency.count += msg.add.length; - /* (7) Remove loader */ + } + + /* (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.emergency.data[id] != null ) + delete gstore.data.notif.emergency.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.emergency.data[id] != null ) + gstore.data.notif.emergency.data[id] = msg.upd[id]; + + } + + /* (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){ @@ -48,28 +71,51 @@ window.wsc_event = wsc.channel('event/31').listen(function(msg, err){ if( typeof msg.error != 'boolean' || msg.error !== false ) return infobox.show('Erreur de connexion WebSocket@event', 'warning', 3000); - /* (3) If no message -> exit */ - if( msg.data == null ) - return; + /* (3) If message(s) to add */ + if( msg.add != null ){ - /* (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.data.length == 1 && router.app.$route.path != '/event' ) - ( new Audio('https://notificationsounds.com/message-tones/communication-channel-519/download/mp3') ).play(); + // {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(); - /* (5) Add messages to stack */ - gstore.data.notif.event.data = gstore.data.notif.event.data.concat( msg.data ); + // {2} Add messages to stack // + gstore.data.notif.event.data = gstore.data.notif.event.data.concat( msg.add ); - /* (6) Add notification count if not already on page */ - if( router.app.$route.path != '/event' ) - gstore.data.notif.event.count += msg.data.length; + // {3} Add notification count if not already on page // + if( router.app.$route.path != '/event' ) + gstore.data.notif.event.count += msg.add.length; - /* (7) Remove loader */ + } + + /* (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){