Files
Iris/src/js/services/mopidy/reducer.js

140 lines
3.9 KiB
JavaScript
Raw Normal View History

export default function reducer(mopidy = {}, action){
switch (action.type) {
2016-11-06 15:47:37 +13:00
case 'MOPIDY_CONNECT':
case 'MOPIDY_CONNECTING':
return Object.assign({}, mopidy, { connected: false, connecting: true });
case 'MOPIDY_CONNECTED':
return Object.assign({}, mopidy, { connected: true, connecting: false });
case 'MOPIDY_DISCONNECTED':
return Object.assign({}, mopidy, { connected: false, connecting: false });
2016-10-18 08:56:53 +13:00
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
});
2016-11-06 18:29:49 +13:00
case 'MOPIDY_URISCHEMES':
return Object.assign({}, mopidy, {
uri_schemes: action.data
});
/**
2016-11-06 18:29:49 +13:00
* State-oriented 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
});
2016-11-06 18:29:49 +13:00
case 'MOPIDY_VOLUME':
return Object.assign({}, mopidy, {
volume: action.data
});
case 'MOPIDY_TIMEPOSITION':
return Object.assign({}, mopidy, {
time_position: action.data
});
/**
* Asset-oriented actions
**/
case 'MOPIDY_TLTRACKS':
return Object.assign({}, mopidy, {
tracks: action.data
});
case 'MOPIDY_CURRENTTLTRACK':
2016-10-31 16:49:42 +13:00
if( !action.data ) return mopidy;
2016-10-25 14:09:53 +13:00
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, {
2016-10-27 13:02:10 +13:00
current_tltrack: action.data,
2016-10-25 14:09:53 +13:00
tracks: tracks
});
2016-11-06 18:29:49 +13:00
case 'MOPIDY_PLAYLISTS_LOADED':
if( !action.data ) return mopidy;
return Object.assign({}, mopidy, { playlists: action.data });
2016-11-03 18:22:26 +13:00
case 'MOPIDY_DIRECTORY_LOADED':
2016-11-01 07:37:18 +13:00
return Object.assign({}, mopidy, {
directory: action.data
2016-11-01 07:37:18 +13:00
});
2016-11-01 11:49:04 +13:00
case 'MOPIDY_PLAYLIST_LOADED':
return Object.assign({}, mopidy, {
playlist: action.data
});
2016-11-01 13:19:51 +13:00
case 'MOPIDY_ALBUM_LOADED':
return Object.assign({}, mopidy, {
album: action.data
});
2016-11-01 16:41:04 +13:00
case 'MOPIDY_ARTIST_LOADED':
return Object.assign({}, mopidy, {
artist: action.data
});
2016-11-01 19:27:59 +13:00
case 'MOPIDY_ARTISTS_LOADED':
return Object.assign({}, mopidy, {
artists: action.data
});
case 'MOPIDY_ALBUMS_LOADED':
return Object.assign({}, mopidy, {
albums: action.data
});
2016-11-06 18:29:49 +13:00
case 'MOPIDY_SEARCH':
var results = []
for( var i = 0; i < action.data.length; i++ ){
results = [...results, ...action.data[i].tracks]
}
return Object.assign({}, mopidy, {
search_results_tracks: results
});
default:
return mopidy
}
}