87 lines
2.3 KiB
JavaScript
Executable File
87 lines
2.3 KiB
JavaScript
Executable File
|
|
export default function reducer(mopidy = {}, action){
|
|
switch (action.type) {
|
|
|
|
case 'MOPIDY_CONNECTED':
|
|
return Object.assign({}, mopidy, { connected: true, connecting: false });
|
|
|
|
case 'MOPIDY_DISCONNECTED':
|
|
return Object.assign({}, mopidy, { connected: false, connecting: false });
|
|
|
|
case 'MOPIDY_SET_CONFIG':
|
|
return Object.assign({}, mopidy, {
|
|
host: action.host,
|
|
port: action.port
|
|
});
|
|
|
|
case 'MOPIDY_CHANGE_TRACK':
|
|
return Object.assign({}, mopidy, {
|
|
tlid: action.tlid
|
|
});
|
|
|
|
case 'MOPIDY_PLAYLISTS_LOADED':
|
|
if( !action.data ) return mopidy;
|
|
return Object.assign({}, mopidy, { playlists: action.data });
|
|
|
|
|
|
/**
|
|
* Websocket-initiated actions
|
|
**/
|
|
case 'MOPIDY_STATE':
|
|
return Object.assign({}, mopidy, {
|
|
state: action.data
|
|
});
|
|
|
|
case 'MOPIDY_CONSUME':
|
|
return Object.assign({}, mopidy, {
|
|
consume: action.data
|
|
});
|
|
|
|
case 'MOPIDY_RANDOM':
|
|
return Object.assign({}, mopidy, {
|
|
random: action.data
|
|
});
|
|
|
|
case 'MOPIDY_REPEAT':
|
|
return Object.assign({}, mopidy, {
|
|
repeat: action.data
|
|
});
|
|
|
|
case 'MOPIDY_TLTRACKS':
|
|
return Object.assign({}, mopidy, {
|
|
tracks: action.data
|
|
});
|
|
|
|
case 'MOPIDY_CURRENTTLTRACK':
|
|
if( !action.data ) return mopidy;
|
|
|
|
var tracks = [];
|
|
Object.assign(tracks, mopidy.tracks);
|
|
|
|
for( var i = 0; i < tracks.length; i++ ){
|
|
Object.assign(tracks[i].track, { playing: ( tracks[i].tlid == action.data.tlid ) });
|
|
}
|
|
|
|
return Object.assign({}, mopidy, {
|
|
current_tltrack: action.data,
|
|
tracks: tracks
|
|
});
|
|
|
|
case 'MOPIDY_VOLUME':
|
|
return Object.assign({}, mopidy, {
|
|
volume: action.data
|
|
});
|
|
|
|
case 'MOPIDY_BROWSE':
|
|
return Object.assign({}, mopidy, {
|
|
browse: action.data
|
|
});
|
|
|
|
default:
|
|
return mopidy
|
|
}
|
|
}
|
|
|
|
|
|
|