Merging actions into unifed format

This commit is contained in:
James Barnsley
2017-09-04 08:17:28 +12:00
parent 425326a46e
commit e7f3f689ea
4 changed files with 145 additions and 159 deletions

View File

@ -134,42 +134,7 @@ const CoreMiddleware = (function(){
// backend searching (mopidy)
if (state.mopidy.connected){
switch (action.search_type){
case 'playlists':
for (var i = 0; i < full_uri_schemes.length; i++){
store.dispatch(mopidyActions.getPlaylistSearchResults(action.query,100,full_uri_schemes[i]))
}
break
case 'artists':
for (var i = 0; i < full_uri_schemes.length; i++){
store.dispatch(mopidyActions.getArtistSearchResults(action.query,100,full_uri_schemes[i]))
}
break
case 'albums':
for (var i = 0; i < full_uri_schemes.length; i++){
store.dispatch(mopidyActions.getAlbumSearchResults(action.query,100,full_uri_schemes[i]))
}
break
case 'tracks':
for (var i = 0; i < uri_schemes.length; i++){
store.dispatch(mopidyActions.getTrackSearchResults(action.query,100,uri_schemes[i]))
}
break
default:
for (var i = 0; i < full_uri_schemes.length; i++){
store.dispatch(mopidyActions.getPlaylistSearchResults(action.query,6,full_uri_schemes[i]))
store.dispatch(mopidyActions.getArtistSearchResults(action.query,6,full_uri_schemes[i]))
store.dispatch(mopidyActions.getAlbumSearchResults(action.query,6,full_uri_schemes[i]))
}
for (var i = 0; i < uri_schemes.length; i++){
store.dispatch(mopidyActions.getTrackSearchResults(action.query,20,uri_schemes[i]))
}
}
store.dispatch(mopidyActions.getSearchResults(action.search_type, action.query, 100, full_uri_schemes))
}
break

View File

@ -260,39 +260,12 @@ export function cancelProcessor(processor){
* Searching
**/
export function getTrackSearchResults(query, limit = 100, uri_scheme){
export function getSearchResults(context, query, limit = 100){
return {
type: 'MOPIDY_GET_TRACK_SEARCH_RESULTS',
type: 'MOPIDY_GET_SEARCH_RESULTS',
context: context,
query: query,
limit: limit,
uri_scheme: uri_scheme
}
}
export function getArtistSearchResults(query, limit = 100, uri_scheme){
return {
type: 'MOPIDY_GET_ARTIST_SEARCH_RESULTS',
query: query,
limit: limit,
uri_scheme: uri_scheme
}
}
export function getAlbumSearchResults(query, limit = 100, uri_scheme){
return {
type: 'MOPIDY_GET_ALBUM_SEARCH_RESULTS',
query: query,
limit: limit,
uri_scheme: uri_scheme
}
}
export function getPlaylistSearchResults(query, limit = 100, uri_scheme){
return {
type: 'MOPIDY_GET_PLAYLIST_SEARCH_RESULTS',
query: query,
limit: limit,
uri_scheme: uri_scheme
limit: limit
}
}

View File

@ -488,120 +488,164 @@ const MopidyMiddleware = (function(){
break
case 'MOPIDY_GET_TRACK_SEARCH_RESULTS':
instruct( socket, store, 'library.search', {query: {any: [action.query]}, uris: [action.uri_scheme]})
.then( response => {
if (response.length <= 0) return
if (typeof(response[0].tracks) === 'undefined') return
case 'MOPIDY_GET_SEARCH_RESULTS':
store.dispatch(uiActions.startProcess(
'MOPIDY_GET_SEARCH_RESULTS_PROCESSOR',
'Searching Mopidy',
{
context: action.context,
query: action.query,
limit: action.limit,
schemes: store.getState().ui.search_settings.uri_schemes
}
));
break
var tracks = response[0].tracks.splice(0,action.limit)
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: 'tracks',
results: tracks
});
})
break;
case 'MOPIDY_GET_SEARCH_RESULTS_PROCESSOR':
case 'MOPIDY_GET_ARTIST_SEARCH_RESULTS':
instruct( socket, store, 'library.search', {query: {artist: [action.query]}, uris: [action.uri_scheme]})
.then( response => {
if (response.length <= 0) return
var artists_uris = []
if (response[0].tracks){
for (var i = 0; i < response[0].tracks.length; i++){
if (response[0].tracks[i].artists){
for (var j = 0; j < response[0].tracks[i].artists.length; j++){
var artist = response[0].tracks[i].artists[j]
if (artist.uri){
artists_uris.push(artist.uri)
console.log(action.data.schemes)
break
/*
switch (action.context){
// Tracks
case 'tracks':
instruct( socket, store, 'library.search', {query: {any: [action.query]}, uris: [action.uri_scheme]})
.then( response => {
if (response.length <= 0) return
if (typeof(response[0].tracks) === 'undefined') return
var tracks = response[0].tracks.splice(0,action.limit)
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: action.context,
results: tracks
});
store.dispatch(uiActions.processFinished('MOPIDY_GET_SEARCH_RESULTS_PROCESSOR'))
})
break
// Artists
case 'artists':
instruct( socket, store, 'library.search', {query: {artist: [action.query]}, uris: [action.uri_scheme]})
.then( response => {
if (response.length <= 0) return
var artists_uris = []
if (response[0].tracks){
for (var i = 0; i < response[0].tracks.length; i++){
if (response[0].tracks[i].artists){
for (var j = 0; j < response[0].tracks[i].artists.length; j++){
var artist = response[0].tracks[i].artists[j]
if (artist.uri){
artists_uris.push(artist.uri)
}
}
}
}
}
}
}
// TODO: limit uris at the loop, rather than post loop for performance
artists_uris = helpers.removeDuplicates(artists_uris).splice(0, action.limit)
// TODO: limit uris at the loop, rather than post loop for performance
artists_uris = helpers.removeDuplicates(artists_uris).splice(0, action.limit)
// load each artist
for (var i = 0; i < artists_uris.length; i++){
store.dispatch(mopidyActions.getArtist(artists_uris[i]))
}
// load each artist
for (var i = 0; i < artists_uris.length; i++){
store.dispatch(mopidyActions.getArtist(artists_uris[i]))
}
// and plug in their URIs
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: 'artists',
results: artists_uris
})
})
break;
// and plug in their URIs
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: action.context,
results: artists_uris
})
case 'MOPIDY_GET_ALBUM_SEARCH_RESULTS':
instruct( socket, store, 'library.search', {query: {album: [action.query]}, uris: [action.uri_scheme]})
.then( response => {
if (response.length <= 0) return
store.dispatch(uiActions.processFinished('MOPIDY_GET_SEARCH_RESULTS_PROCESSOR'))
})
break
// collate all our different sources into one array
var albums_uris = []
if (response[0].tracks){
for (var i = 0; i < response[0].tracks.length; i++){
if (response[0].tracks[i].album){
var album = response[0].tracks[i].album
if (album.uri){
albums_uris.push(album.uri)
// Albums
case 'albums':
instruct( socket, store, 'library.search', {query: {album: [action.query]}, uris: [action.uri_scheme]})
.then( response => {
if (response.length <= 0) return
// collate all our different sources into one array
var albums_uris = []
if (response[0].tracks){
for (var i = 0; i < response[0].tracks.length; i++){
if (response[0].tracks[i].album){
var album = response[0].tracks[i].album
if (album.uri){
albums_uris.push(album.uri)
}
}
}
}
}
}
// TODO: limit uris at the loop, rather than post loop for performance
albums_uris = helpers.removeDuplicates(albums_uris).splice(0, action.limit)
// TODO: limit uris at the loop, rather than post loop for performance
albums_uris = helpers.removeDuplicates(albums_uris).splice(0, action.limit)
// load each album
for (var i = 0; i < albums_uris.length; i++){
store.dispatch(mopidyActions.getAlbum(albums_uris[i]))
}
// load each album
for (var i = 0; i < albums_uris.length; i++){
store.dispatch(mopidyActions.getAlbum(albums_uris[i]))
}
// and plug in their URIs
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: 'albums',
results: albums_uris
})
})
break
// and plug in their URIs
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: action.context,
results: albums_uris
})
case 'MOPIDY_GET_PLAYLIST_SEARCH_RESULTS':
instruct( socket, store, 'playlists.asList')
.then( response => {
if (response.length <= 0) return
store.dispatch(uiActions.processFinished('MOPIDY_GET_SEARCH_RESULTS_PROCESSOR'))
})
break
var playlists_uris = []
for (var i = 0; i < response.length; i++){
var playlist = response[i]
if (playlist.name.includes(action.query) && action.uri_scheme == helpers.uriSource(playlist.uri)+':'){
playlists_uris.push(playlist.uri)
}
}
// Playlists
case 'playlists':
instruct( socket, store, 'playlists.asList')
.then( response => {
if (response.length <= 0) return
playlists_uris = playlists_uris.splice(0, action.limit)
var playlists_uris = []
for (var i = 0; i < response.length; i++){
var playlist = response[i]
if (playlist.name.includes(action.query) && action.uri_scheme == helpers.uriSource(playlist.uri)+':'){
playlists_uris.push(playlist.uri)
}
}
// load each playlist
for (var i = 0; i < playlists_uris.length; i++){
store.dispatch(mopidyActions.getPlaylist(playlists_uris[i]))
}
playlists_uris = playlists_uris.splice(0, action.limit)
// load each playlist
for (var i = 0; i < playlists_uris.length; i++){
store.dispatch(mopidyActions.getPlaylist(playlists_uris[i]))
}
// and plug in their URIs
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: action.context,
results: playlists_uris
})
dispatch(uiActions.processFinished('MOPIDY_GET_SEARCH_RESULTS_PROCESSOR'))
})
break
}
*/
// and plug in their URIs
store.dispatch({
type: 'MOPIDY_SEARCH_RESULTS_LOADED',
context: 'playlists',
results: playlists_uris
})
})
break

View File

@ -446,6 +446,8 @@ export function getURL( url, action_name, key = false ){
export function getSearchResults(query, type = 'album,artist,playlist,track', limit = 50, offset = 0){
return (dispatch, getState) => {
dispatch(uiActions.startProcess('SPOTIFY_GET_SEARCH_RESULTS_PROCESSOR','Searching Spotify'))
var url = 'search?q='+query
url += '&type='+type
url += '&country='+getState().core.country
@ -508,6 +510,8 @@ export function getSearchResults(query, type = 'album,artist,playlist,track', li
results: response.tracks.items,
more: response.tracks.next,
});
dispatch(uiActions.processFinished('SPOTIFY_GET_SEARCH_RESULTS_PROCESSOR'))
});
}
}