From 124c43c29dfa6d6867357fb3973b9b46164a1b54 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Thu, 9 Mar 2017 08:04:23 +1300 Subject: [PATCH] Browser notifications now working --- src/js/services/mopidy/middleware.js | 44 ++++++++-------------------- src/js/services/pusher/actions.js | 7 +++++ src/js/services/pusher/middleware.js | 32 ++++++++++++++++---- 3 files changed, 46 insertions(+), 37 deletions(-) diff --git a/src/js/services/mopidy/middleware.js b/src/js/services/mopidy/middleware.js index b1d0a596..d683edca 100755 --- a/src/js/services/mopidy/middleware.js +++ b/src/js/services/mopidy/middleware.js @@ -198,43 +198,23 @@ const MopidyMiddleware = (function(){ **/ case 'MOPIDY_NEXT': - var icon = false - if( store.getState().ui.current_track ){ - icon = helpers.getTrackIcon( store.getState().ui.current_track ) + var data = { + type: 'browser_notification', + title: 'Track skipped', + body: store.getState().pusher.username +' skipped this track', + icon: (store.getState().ui.current_track ? helpers.getTrackIcon( store.getState().ui.current_track ) : false) } - store.dispatch({ - type: 'PUSHER_SEND_BROADCAST', - action: 'broadcast', - ignore_self: true, - data: { - type: 'notification', - data: { - title: 'Track skipped', - body: store.getState().pusher.username +' skipped this track', - icon: icon - } - } - }) + store.dispatch( pusherActions.deliverBroadcast(data) ) break; case 'MOPIDY_STOP': - var icon = false - if( store.getState().ui.current_track ){ - icon = helpers.getTrackIcon( store.getState().ui.current_track ) + var data = { + type: 'browser_notification', + title: 'Playback stopped', + body: store.getState().pusher.username +' stopped playback', + icon: (store.getState().ui.current_track ? helpers.getTrackIcon( store.getState().ui.current_track ) : false) } - store.dispatch({ - type: 'PUSHER_SEND_BROADCAST', - action: 'broadcast', - ignore_self: true, - data: { - type: 'notification', - data: { - title: 'Playback stopped', - body: store.getState().pusher.username +' stopped playback', - icon: icon - } - } - }) + store.dispatch( pusherActions.deliverBroadcast(data) ) break; case 'MOPIDY_ENQUEUE_URIS': diff --git a/src/js/services/pusher/actions.js b/src/js/services/pusher/actions.js index eb5c78df..c9c04739 100755 --- a/src/js/services/pusher/actions.js +++ b/src/js/services/pusher/actions.js @@ -48,6 +48,13 @@ export function instruct( data = null ){ } } +export function deliverBroadcast( data = null ){ + return { + type: 'PUSHER_DELIVER_BROADCAST', + data: data + } +} + export function sendAuthorization( recipient_connectionid, authorization, me ){ return { type: 'PUSHER_DELIVER_MESSAGE', diff --git a/src/js/services/pusher/middleware.js b/src/js/services/pusher/middleware.js index 60e8b165..23998ba2 100755 --- a/src/js/services/pusher/middleware.js +++ b/src/js/services/pusher/middleware.js @@ -159,7 +159,7 @@ const PusherMiddleware = (function(){ break case 'PUSHER_DELIVER_MESSAGE': - request('deliver_message', action) + request('deliver_message', action.data) .then( response => { store.dispatch( uiActions.createNotification('Message delivered') ) @@ -167,6 +167,10 @@ const PusherMiddleware = (function(){ ) break + case 'PUSHER_DELIVER_BROADCAST': + request('broadcast', action.data) + break + case 'PUSHER_GET_QUEUE_METADATA': request('get_queue_metadata') .then( @@ -276,10 +280,18 @@ const PusherMiddleware = (function(){ } } + // we don't need to wait for response, as change will be broadcast request( 'start_radio', data ) - .then(response => { - console.log(response) - }) + break + + case 'PUSHER_RADIO_STARTED': + var data = { + type: 'browser_notification', + title: 'Radio', + body: 'Radio mode started', + icon: (store.getState().ui.current_track ? helpers.getTrackIcon( store.getState().ui.current_track ) : false) + } + store.dispatch( pusherActions.deliverBroadcast(data) ) break case 'PUSHER_STOP_RADIO': @@ -291,10 +303,20 @@ const PusherMiddleware = (function(){ seed_tracks: [] } - // we don't need to wait for request, as change will be broadcast + // we don't need to wait for response, as change will be broadcast request( 'stop_radio', data ) break + case 'PUSHER_RADIO_STOPPED': + var data = { + type: 'browser_notification', + title: 'Radio', + body: 'Radio mode stopped', + icon: (store.getState().ui.current_track ? helpers.getTrackIcon( store.getState().ui.current_track ) : false) + } + store.dispatch( pusherActions.deliverBroadcast(data) ) + break + case 'PUSHER_BROWSER_NOTIFICATION': store.dispatch(uiActions.createBrowserNotification(action)) break