Long-running socket watcher, needs proper cleanup

This commit is contained in:
James Barnsley
2018-11-04 14:41:08 +13:00
parent 4327771b2e
commit ffaef9d63e
8 changed files with 156 additions and 44 deletions

View File

@ -1,14 +1,15 @@
import ReactGA from 'react-ga'
import ReactGA from 'react-ga';
var helpers = require('../../helpers')
var coreActions = require('../core/actions')
var uiActions = require('../ui/actions')
var mopidyActions = require('../mopidy/actions')
var pusherActions = require('./actions')
var lastfmActions = require('../lastfm/actions')
var geniusActions = require('../genius/actions')
var spotifyActions = require('../spotify/actions')
var helpers = require('../../helpers');
var coreActions = require('../core/actions');
var uiActions = require('../ui/actions');
var mopidyActions = require('../mopidy/actions');
var pusherActions = require('./actions');
var lastfmActions = require('../lastfm/actions');
var geniusActions = require('../genius/actions');
var spotifyActions = require('../spotify/actions');
var snapcastActions = require('../snapcast/actions');
const PusherMiddleware = (function(){
@ -159,6 +160,11 @@ const PusherMiddleware = (function(){
store.dispatch(uiActions.createNotification({type: 'bad', content: 'Test failed'}));
break;
}
// Pass snapcast events to the Snapcast service
if (message.method.startsWith('snapcast_')){
store.dispatch(snapcastActions.eventReceived(message));
}
}
}
}

View File

@ -77,6 +77,14 @@ export function setGroupVolume(id, percent, old_percent = 0){
}
}
export function eventReceived(message){
return {
type: 'SNAPCAST_EVENT_RECEIVED',
method: message.method,
params: message.params
}
}

View File

@ -392,6 +392,45 @@ const SnapcastMiddleware = (function(){
}
break;
case 'SNAPCAST_EVENT_RECEIVED':
console.log(action)
// Drop the prefix
action.method = action.method.replace('snapcast_','');
switch (action.method){
case 'Client.OnVolumeChanged':
store.dispatch(snapcastActions.clientLoaded(
{
id: action.params.id,
mute: action.params.volume.muted,
volume: action.params.volume.percent
}
));
break;
case 'Client.OnLatencyChanged':
store.dispatch(snapcastActions.clientLoaded(
{
id: action.params.id,
latency: action.params.latency
}
));
break;
case 'Client.OnNameChanged':
store.dispatch(snapcastActions.clientLoaded(
{
id: action.params.id,
name: action.params.name
}
));
break;
}
break;
// This action is irrelevant to us, pass it on to the next middleware
default:
return next(action);