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

131 lines
3.8 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,
2017-03-27 21:36:33 +13:00
port: action.port,
ssl: action.ssl
2016-10-18 08:56:53 +13:00
});
case 'MOPIDY_CHANGE_TRACK':
return Object.assign({}, mopidy, {
tlid: action.tlid
});
case 'MOPIDY_URISCHEMES_FILTERED':
2016-11-06 18:29:49 +13:00
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, {
play_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
});
2017-05-19 11:33:06 +12:00
case 'MOPIDY_MUTE':
return Object.assign({}, mopidy, {
mute: action.data
});
2016-11-06 18:29:49 +13:00
case 'MOPIDY_TIMEPOSITION':
return Object.assign({}, mopidy, {
time_position: action.data
});
2017-02-10 09:06:41 +13:00
case 'MOPIDY_HISTORY':
var history = []
for (var i = 0; i < action.data.length; i++){
history.push(Object.assign(
{},
action.data[i][1],
{
played_at: action.data[i][0],
type: 'history'
}
))
}
return Object.assign({}, mopidy, {
queue_history: history
});
2016-11-06 18:29:49 +13:00
/**
* Asset-oriented actions
**/
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
});
2017-05-05 03:56:55 +12:00
case 'MOPIDY_ENQUEUE_URIS':
if (mopidy.enqueue_uris_batches){
var batches = [...mopidy.enqueue_uris_batches, ...action.batches]
} else {
var batches = Object.assign([],action.batches)
}
return Object.assign({}, mopidy, {
enqueue_uris_batches: batches
});
2017-05-05 04:06:06 +12:00
case 'MOPIDY_ENQUEUE_URIS_CANCEL':
return Object.assign({}, mopidy, {
enqueue_uris_batches: []
});
2017-05-05 03:56:55 +12:00
case 'MOPIDY_ENQUEUE_URIS_BATCH_DONE':
if (!mopidy.enqueue_uris_batches || mopidy.enqueue_uris_batches.length <= 0){
var batches = []
console.error('Cannot remove batch when queue empty',action)
} else {
var batches = mopidy.enqueue_uris_batches
batches.shift()
}
return Object.assign({}, mopidy, {
enqueue_uris_batches: batches
});
default:
return mopidy
}
}