Files
Iris/src/js/services/mopidy/reducer.js
James Barnsley b011292a8c Search results stored by provider:type:term
- This allows storing of per-provider, per-type, per-term results
- We can restore old search results, and hide/show by provider without needing to re-query
2023-10-08 21:14:08 +13:00

110 lines
2.8 KiB
JavaScript
Executable File

export default function reducer(mopidy = {}, action) {
switch (action.type) {
case 'MOPIDY_SET':
return { ...mopidy, ...action.data };
case 'MOPIDY_UPDATE_SERVERS':
return { ...mopidy, servers: action.servers };
case 'MOPIDY_CONNECT':
case 'MOPIDY_CONNECTING':
return {
...mopidy,
connected: false,
connecting: true,
};
case 'MOPIDY_CONNECTED':
return {
...mopidy,
connected: true,
connecting: false,
restart_running: false,
upgrade_running: false,
};
case 'MOPIDY_DISCONNECTED':
return {
...mopidy,
connected: false,
connecting: false,
};
case 'MOPIDY_CHANGE_TRACK':
return { ...mopidy, tlid: action.tlid };
case 'MOPIDY_URI_SCHEMES':
return { ...mopidy, uri_schemes: action.uri_schemes };
case 'MOPIDY_RESTART_STARTED':
return { ...mopidy, restart_running: true };
case 'MOPIDY_RESTART_FINISHED':
return { ...mopidy, restart_running: false };
case 'MOPIDY_UPGRADE_STARTED':
return { ...mopidy, upgrade_running: true };
case 'MOPIDY_UPGRADE_FINISHED':
return { ...mopidy, upgrade_running: false };
case 'MOPIDY_LOCAL_SCAN_STARTED':
return { ...mopidy, local_scan_running: true };
case 'MOPIDY_LOCAL_SCAN_FINISHED':
return { ...mopidy, local_scan_running: false };
/**
* State-oriented actions
* */
case 'MOPIDY_PLAY_STATE':
return { ...mopidy, play_state: action.play_state };
case 'MOPIDY_CONSUME':
return { ...mopidy, consume: action.consume };
case 'MOPIDY_RANDOM':
return { ...mopidy, random: action.random };
case 'MOPIDY_REPEAT':
return { ...mopidy, repeat: action.repeat };
case 'MOPIDY_VOLUME':
return { ...mopidy, volume: action.volume };
case 'MOPIDY_MUTE':
return { ...mopidy, mute: action.mute };
case 'MOPIDY_TIME_POSITION':
return { ...mopidy, time_position: action.time_position };
case 'MOPIDY_QUEUE_HISTORY':
var history = [];
for (let i = 0; i < action.tracks.length; i++) {
history.push({
...action.tracks[i][1],
played_at: action.tracks[i][0],
type: 'history',
});
}
return { ...mopidy, queue_history: history };
/**
* Directories
* This also facilitates all backend-only music providers (SoundCloud, Dirble, etc)
* */
case 'MOPIDY_DIRECTORY_LOADING':
return { ...mopidy, directory: { uri: action.uri } };
case 'MOPIDY_DIRECTORY_LOADED':
return {
...mopidy,
directory: { ...mopidy.directory, ...action.directory },
};
default:
return mopidy;
}
}