Discover moved to recommendations; URL handles context loading

This commit is contained in:
James Barnsley
2017-06-02 09:31:05 +12:00
parent b5f74e119f
commit a2d326563d
10 changed files with 214 additions and 43 deletions

View File

@ -498,14 +498,16 @@ export function getAutocompleteResults(field_id, query, types = ['album','artist
.then(response => {
var genres = []
if (genre_included){
var available_genres = getState().spotify.genres
for (var i = 0; i < available_genres.length; i++){
if (available_genres[i].includes(query)){
var genre = available_genres[i]
genres.push({
name: (genre.charAt(0).toUpperCase()+genre.slice(1)).replace('-',' '),
uri: 'spotify:genre:'+genre
})
var available_genres = getState().ui.genres
if (available_genres){
for (var i = 0; i < available_genres.length; i++){
if (available_genres[i].includes(query)){
var genre = available_genres[i]
genres.push({
name: (genre.charAt(0).toUpperCase()+genre.slice(1)).replace('-',' '),
uri: 'spotify:genre:'+genre
})
}
}
}
}

View File

@ -273,6 +273,32 @@ const SpotifyMiddleware = (function(){
});
break
case 'SPOTIFY_FAVORITES_LOADED':
if (action.artists.length > 0){
store.dispatch({
type: 'ARTISTS_LOADED',
artists: action.artists
})
action.artists_uris = helpers.asURIs(action.artists)
}
if (action.tracks.length > 0){
store.dispatch({
type: 'TRACKS_LOADED',
tracks: action.tracks
})
action.tracks_uris = helpers.asURIs(action.tracks)
}
next(action)
break
case 'SPOTIFY_TRACK_LOADED':
store.dispatch({
type: 'TRACK_LOADED',
key: action.data.uri,
track: action.data
});
break
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_TRACKS':
store.dispatch({
type: 'SEARCH_RESULTS_LOADED',

View File

@ -1,4 +1,6 @@
import * as helpers from '../../helpers'
export default function reducer(spotify = {}, action){
switch (action.type) {
@ -179,9 +181,6 @@ export default function reducer(spotify = {}, action){
if( !action.data ) return Object.assign({}, spotify, { discover: [] })
return Object.assign({}, spotify, { discover: [...spotify.discover, ...[action.data]] })
case 'SPOTIFY_GENRES_LOADED':
return Object.assign({}, spotify, {genres: action.genres})
case 'SPOTIFY_RECOMMENDATIONS_LOADED':
return Object.assign(
{},
@ -199,8 +198,8 @@ export default function reducer(spotify = {}, action){
{},
spotify,
{
favorite_artists: action.artists,
favorite_tracks: action.tracks
favorite_artists: action.artists_uris,
favorite_tracks: action.tracks_uris
})
case 'SPOTIFY_AUTOCOMPLETE_LOADING':

View File

@ -210,6 +210,57 @@ export function addTracksToPlaylist( uri, tracks_uris ){
}
/**
* Assets loaded
**/
export function albumLoaded(key,album){
return {
type: 'ALBUM_LOADED',
key: key,
album: album
}
}
export function albumsLoaded(albums){
return {
type: 'ALBUMS_LOADED',
albums: albums
}
}
export function artistLoaded(key,artist){
return {
type: 'ARTIST_LOADED',
key: key,
artist: artist
}
}
export function artistsLoaded(artists){
return {
type: 'ALBUMS_LOADED',
artists: artists
}
}
export function trackLoaded(key,track){
return {
type: 'TRACK_LOADED',
key: key,
track: track
}
}
export function tracksLoaded(tracks){
return {
type: 'TRACKS_LOADED',
tracks: tracks
}
}
/**
* Modal
*
@ -268,6 +319,7 @@ export function removeNotification(key){
}
/**
* Loaders
**/

View File

@ -105,12 +105,6 @@ export default function reducer(ui = {}, action){
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
@ -605,6 +599,14 @@ export default function reducer(ui = {}, action){
return Object.assign({}, ui, { library_playlists: items });
/**
* Genres
**/
case 'SPOTIFY_GENRES_LOADED':
return Object.assign({}, ui, {genres: action.genres})
/**
* Search results
**/