Mergingcurrent_track and current_tracklist; Smarter reducers for UI

This commit is contained in:
James Barnsley
2016-11-09 13:18:03 +13:00
parent c87a7fbd17
commit 88caab6aef
24 changed files with 5712 additions and 5915 deletions

View File

@ -16,13 +16,6 @@ export function hideContextMenu(){
}
}
export function setCurrentTrack( track ){
return {
type: 'UI_CURRENT_TRACK',
track: track
}
}
export function lazyLoading( start ){
return {
type: 'UI_LAZY_LOADING',

View File

@ -19,11 +19,65 @@ export default function reducer(ui = {}, action){
case 'UI_LAZY_LOADING':
return Object.assign({}, ui, { lazy_loading: action.start });
case 'UI_CURRENT_TRACK':
var current_track = ui.current_track;
Object.assign({}, current_track, action.track );
case 'SPOTIFY_ALBUM_LOADED':
case 'MOPIDY_ALBUM_LOADED':
return Object.assign({}, ui, { album: action.data });
case 'LASTFM_ALBUM_LOADED':
//if( !action.data.image ) return ui
var album = Object.assign(ui.album, { images: action.data.image })
return Object.assign({}, ui, { album: album });
case 'SPOTIFY_ALBUM_LOADED_MORE':
var album = ui.album
Object.assign(album, { tracks: {
href: action.data.href,
next: action.data.next,
previous: action.data.previous,
items: [ ...ui.album.tracks.items, ...action.data.items ]
}})
return Object.assign({}, ui, { album: album });
/**
* Current track and tracklist
**/
case 'MOPIDY_TLTRACKS':
if( !action.data ) return ui
var tracklist = []
for( var i = 0; i < action.data.length; i++ ){
tracklist.push( Object.assign({}, action.data[i].track, { tlid: action.data[i].tlid }) )
}
return Object.assign({}, ui, { current_tracklist: tracklist });
case 'SPOTIFY_TRACK_LOADED':
if( !action.data ) return ui
var current_track = Object.assign({}, ui.current_track, action.data)
return Object.assign({}, ui, { current_track: current_track });
case 'MOPIDY_CURRENTTLTRACK':
if( !action.data ) return ui
var current_tracklist = []
Object.assign(current_tracklist, ui.current_tracklist)
for( var i = 0; i < current_tracklist.length; i++ ){
Object.assign(
current_tracklist[i],
{ playing: ( current_tracklist[i].tlid == action.data.tlid ) }
)
}
var current_track = action.data.track
Object.assign(current_track, { tlid: action.data.tlid })
return Object.assign({}, ui, {
current_track: current_track
});
default:
return ui
}