Moving search into UI

This commit is contained in:
James Barnsley
2016-11-09 15:49:25 +13:00
parent 88caab6aef
commit b0109abd44
10 changed files with 730 additions and 670 deletions

View File

@ -11,8 +11,24 @@ export function showContextMenu( e, context = false, data ){
}
export function hideContextMenu(){
return {
type: 'UI_HIDE_CONTEXT_MENU'
}
}
export function searchStarted(){
return {
type: 'UI_HIDE_CONTEXT_MENU'
type: 'SEARCH_STARTED',
data: {
artists: [],
albums: [],
playlists: [],
tracks: [],
artists_more: false,
albums_more: false,
playlists_more: false,
tracks_more: false
}
}
}

View File

@ -78,6 +78,74 @@ export default function reducer(ui = {}, action){
current_track: current_track
});
/**
* Search results
**/
case 'SEARCH_STARTED':
return Object.assign({}, ui, { search_results: action.data })
case 'MOPIDY_SEARCH':
// collate all our different sources into one array
var tracks = []
for( var i = 0; i < action.data.length; i++ ){
if( action.data[i].tracks ) tracks = [...tracks, ...action.data[i].tracks]
}
// merge our results with all our other tracks
var results = Object.assign({}, ui.search_results, {
tracks: [...ui.search_results.tracks, ...tracks]
})
return Object.assign({}, ui, { search_results: results })
case 'SPOTIFY_SEARCH_RESULTS_LOADED':
if( !action.data ) return ui
return Object.assign({}, ui, { search_results: {
artists: [ ...ui.search_results.artists, ...action.data.artists.items ],
albums: [ ...ui.search_results.albums, ...action.data.albums.items ],
playlists: [ ...ui.search_results.playlists, ...action.data.playlists.items ],
tracks: [ ...ui.search_results.tracks, ...action.data.tracks.items ],
artists_more: action.data.artists.next,
albums_more: action.data.albums.next,
playlists_more: action.data.playlists.next,
tracks_more: action.data.tracks.next
}});
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ARTISTS':
var artists = [...ui.search_results.artists, ...action.data.artists.items]
var results = Object.assign({}, ui.search_results, {
artists: artists,
artists_more: action.data.artists.next
})
return Object.assign({}, ui, { search_results: results })
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ALBUMS':
var albums = [...ui.search_results.albums, ...action.data.albums.items]
var results = Object.assign({}, ui.search_results, {
albums: albums,
albums_more: action.data.albums.next
})
return Object.assign({}, ui, { search_results: results })
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_PLAYLISTS':
var playlists = [...ui.search_results.playlists, ...action.data.playlists.items]
var results = Object.assign({}, ui.search_results, {
playlists: playlists,
playlists_more: action.data.playlists.next
})
return Object.assign({}, ui, { search_results: results })
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_TRACKS':
var tracks = [...ui.search_results.tracks, ...action.data.tracks.items]
var results = Object.assign({}, ui.search_results, {
tracks: tracks,
tracks_more: action.data.tracks.next
})
return Object.assign({}, ui, { search_results: results })
default:
return ui
}