Fixing search collation of Spotify and Mopidy sources (still need to implement _more)
This commit is contained in:
@ -206,20 +206,12 @@ export function getAlbums(){
|
|||||||
* Other general actions
|
* Other general actions
|
||||||
**/
|
**/
|
||||||
|
|
||||||
export function getSearchResults(query, backends = null, fields = ['any']){
|
export function getSearchResults(query, uris = null, fields = ['any']){
|
||||||
var queryObj = {};
|
|
||||||
for( var i = 0; i < fields.length; i++ ){
|
|
||||||
queryObj[fields[i]] = [query];
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
type: 'NOTHING'
|
type: 'MOPIDY_GET_SEARCH_RESULTS',
|
||||||
|
query: query,
|
||||||
|
uris: uris,
|
||||||
|
fields: fields
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
return {
|
|
||||||
type: 'MOPIDY_INSTRUCT',
|
|
||||||
call: 'library.search',
|
|
||||||
value: { query: queryObj, uris: backends }
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,6 +282,25 @@ const MopidyMiddleware = (function(){
|
|||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'MOPIDY_GET_SEARCH_RESULTS':
|
||||||
|
var queryObject = {};
|
||||||
|
for( var i = 0; i < action.fields.length; i++ ){
|
||||||
|
queryObject[action.fields[i]] = [action.query];
|
||||||
|
}
|
||||||
|
|
||||||
|
instruct( socket, store, 'library.search', {query: queryObject, uris: action.uris})
|
||||||
|
.then( response => {
|
||||||
|
|
||||||
|
// collate all our different sources into one array
|
||||||
|
var tracks = []
|
||||||
|
for( var i = 0; i < response.length; i++ ){
|
||||||
|
if( response[i].tracks ) tracks = [...tracks, ...response[i].tracks]
|
||||||
|
}
|
||||||
|
|
||||||
|
store.dispatch({ type: 'SEARCH_RESULTS_LOADED', tracks: tracks });
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* =============================================================== PLAYLIST(S) ==========
|
* =============================================================== PLAYLIST(S) ==========
|
||||||
|
|||||||
@ -382,8 +382,6 @@ export function getURL( url, action_name, uri = false ){
|
|||||||
export function getSearchResults( query, type = 'album,artist,playlist,track', limit = 50, offset = 0 ){
|
export function getSearchResults( query, type = 'album,artist,playlist,track', limit = 50, offset = 0 ){
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
|
|
||||||
dispatch({ type: 'SEARCH_RESULTS_LOADED', reset: true });
|
|
||||||
|
|
||||||
var url = 'search?q='+query
|
var url = 'search?q='+query
|
||||||
url += '&type='+type
|
url += '&type='+type
|
||||||
url += '&country='+getState().spotify.country
|
url += '&country='+getState().spotify.country
|
||||||
@ -427,7 +425,8 @@ export function getSearchResults( query, type = 'album,artist,playlist,track', l
|
|||||||
artists_more: response.artists.next,
|
artists_more: response.artists.next,
|
||||||
albums_uris: helpers.asURIs(response.albums.items),
|
albums_uris: helpers.asURIs(response.albums.items),
|
||||||
albums_more: response.albums.next,
|
albums_more: response.albums.next,
|
||||||
tracks: response.tracks
|
tracks: response.tracks.items,
|
||||||
|
tracks_more: response.tracks.more
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,20 +18,11 @@ export function hideContextMenu(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function searchStarted( query ){
|
export function startSearch( query ){
|
||||||
|
console.log('STARTING NOW')
|
||||||
return {
|
return {
|
||||||
type: 'SEARCH_STARTED',
|
type: 'SEARCH_STARTED',
|
||||||
query: query,
|
query: query
|
||||||
data: {
|
|
||||||
artists: [],
|
|
||||||
albums: [],
|
|
||||||
playlists: [],
|
|
||||||
tracks: [],
|
|
||||||
artists_more: false,
|
|
||||||
albums_more: false,
|
|
||||||
playlists_more: false,
|
|
||||||
tracks_more: false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -406,43 +406,40 @@ export default function reducer(ui = {}, action){
|
|||||||
* Search results
|
* 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 'SEARCH_RESULTS_LOADED':
|
case 'SEARCH_RESULTS_LOADED':
|
||||||
if (action.reset) return ui
|
console.log(action)
|
||||||
|
|
||||||
if (ui.search_results.artists_uris){
|
// artists
|
||||||
var artists_uris = [...ui.search_results.artists_uris, ...action.artists_uris]
|
if (ui.search_results && ui.search_results.artists_uris){
|
||||||
|
var artists_uris = ui.search_results.artists_uris
|
||||||
}else{
|
}else{
|
||||||
var artists_uris = action.artists_uris
|
var artists_uris = []
|
||||||
}
|
}
|
||||||
|
if (action.artists_uris) artists_uris = [...artists_uris, ...action.artists_uris]
|
||||||
|
|
||||||
if (ui.search_results.albums_uris){
|
// albums
|
||||||
var albums_uris = [...ui.search_results.albums_uris, ...action.albums_uris]
|
if (ui.search_results && ui.search_results.albums_uris){
|
||||||
|
var albums_uris = ui.search_results.albums_uris
|
||||||
}else{
|
}else{
|
||||||
var albums_uris = action.albums_uris
|
var albums_uris = []
|
||||||
}
|
}
|
||||||
|
if (action.albums_uris) albums_uris = [...albums_uris, ...action.albums_uris]
|
||||||
|
|
||||||
if (ui.search_results.playlists_uris){
|
// playlists
|
||||||
var playlists_uris = [...ui.search_results.playlists_uris, ...action.playlists_uris]
|
if (ui.search_results && ui.search_results.playlists_uris){
|
||||||
|
var playlists_uris = ui.search_results.playlists_uris
|
||||||
}else{
|
}else{
|
||||||
var playlists_uris = action.playlists_uris
|
var playlists_uris = []
|
||||||
}
|
}
|
||||||
|
if (action.playlists_uris) playlists_uris = [...playlists_uris, ...action.playlists_uris]
|
||||||
|
|
||||||
|
// tracks
|
||||||
|
if (ui.search_results && ui.search_results.tracks){
|
||||||
|
var tracks = ui.search_results.tracks
|
||||||
|
}else{
|
||||||
|
var tracks = []
|
||||||
|
}
|
||||||
|
if (action.tracks) tracks = [...tracks, ...action.tracks]
|
||||||
|
|
||||||
return Object.assign({}, ui, {
|
return Object.assign({}, ui, {
|
||||||
search_results: {
|
search_results: {
|
||||||
@ -452,8 +449,8 @@ export default function reducer(ui = {}, action){
|
|||||||
albums_uris: albums_uris,
|
albums_uris: albums_uris,
|
||||||
playlists_more: (action.playlists_more ? action.playlists_more : null),
|
playlists_more: (action.playlists_more ? action.playlists_more : null),
|
||||||
playlists_uris: playlists_uris,
|
playlists_uris: playlists_uris,
|
||||||
tracks: [ ...ui.search_results.tracks, ...action.tracks.items ],
|
tracks: tracks,
|
||||||
tracks_more: action.tracks.next
|
tracks_more: (action.tracks_more ? action.tracks.tracks_more : null)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -41,9 +41,9 @@ class Search extends React.Component{
|
|||||||
}
|
}
|
||||||
|
|
||||||
performSearch( props = this.props ){
|
performSearch( props = this.props ){
|
||||||
this.props.uiActions.searchStarted( props.params.query )
|
this.props.uiActions.startSearch(props.params.query)
|
||||||
this.props.spotifyActions.getSearchResults( props.params.query )
|
this.props.spotifyActions.getSearchResults( props.params.query )
|
||||||
this.props.mopidyActions.getSearchResults( props.params.query, props.uri_schemes )
|
if( props.mopidy_connected ) this.props.mopidyActions.getSearchResults( props.params.query, props.uri_schemes )
|
||||||
}
|
}
|
||||||
|
|
||||||
loadMore(type){
|
loadMore(type){
|
||||||
|
|||||||
Reference in New Issue
Block a user