Bunched action calls; Library artists and albums

This commit is contained in:
James Barnsley
2017-01-14 22:32:39 +13:00
parent 539748b112
commit ce4c26f18b
9 changed files with 164 additions and 59 deletions

View File

@ -666,31 +666,12 @@ export function getArtists( uris ){
export function getLibraryArtists(){
return (dispatch, getState) => {
dispatch({ type: 'SPOTIFY_LIBRARY_ARTISTS_LOADED', data: false });
sendRequest( dispatch, getState, 'me/following?type=artist&limit=50' )
.then( response => {
for (var i = 0; i < response.length; i++){
var artist = response[i]
for (var i = 0; i < artist.albums.length; i++){
dispatch({
type: 'ALBUM_LOADED',
album: artist.albums[i]
});
}
artist.albums = helpers.asURIs(artist.albums)
artist.albums_more = artist.albums.next
dispatch({
type: 'ARTIST_LOADED',
artist: artist
});
}
dispatch({
type: 'LIBRARY_ARTISTS_LOADED',
uris: helpers.asURIs(response)
});
type: 'SPOTIFY_LIBRARY_ARTISTS_LOADED',
data: response
})
});
}
}
@ -777,12 +758,10 @@ export function getAlbum( uri ){
// get all album artists as full objects
sendRequest( dispatch, getState, 'artists/?ids='+artist_ids )
.then( response => {
for (var i = 0; i < response.artists.length; i++){
dispatch({
type: 'ARTIST_LOADED',
artist: response.artists[i]
});
}
dispatch({
type: 'ARTISTS_LOADED',
artists: response.artists
});
});
})
@ -792,14 +771,14 @@ export function getAlbum( uri ){
export function getLibraryAlbums(){
return (dispatch, getState) => {
dispatch({ type: 'SPOTIFY_LIBRARY_ALBUMS_LOADED', data: false });
dispatch({ type: 'LIBRARY_ALBUMS_LOADED', uris: false });
sendRequest( dispatch, getState, 'me/albums?limit=40' )
.then( response => {
dispatch({
type: 'SPOTIFY_LIBRARY_ALBUMS_LOADED',
data: response
});
})
});
}
}

View File

@ -93,6 +93,51 @@ const SpotifyMiddleware = (function(){
}
break
case 'SPOTIFY_LIBRARY_ARTISTS_LOADED':
store.dispatch({
type: 'ARTISTS_LOADED',
artists: action.data.artists.items
});
store.dispatch({
type: 'LIBRARY_ARTISTS_LOADED',
uris: helpers.asURIs(action.data.artists.items),
more: action.data.artists.next,
total: action.data.artists.total
});
break
case 'SPOTIFY_LIBRARY_ALBUMS_LOADED':
var albums = []
for (var i = 0; i < action.data.items.length; i++){
albums.push(
Object.assign(
{},
action.data.items[i].album,
{
added_at: action.data.items[i].added_at,
tracks: action.data.items[i].album.tracks.items,
tracks_next: action.data.items[i].album.tracks.tracks_next,
tracks_total: action.data.items[i].album.tracks.tracks_total
}
)
)
}
store.dispatch({
type: 'ALBUMS_LOADED',
albums: albums
});
store.dispatch({
type: 'LIBRARY_ALBUMS_LOADED',
uris: helpers.asURIs(albums),
more: action.data.next,
total: action.data.total
});
break
// This action is irrelevant to us, pass it on to the next middleware
default:
return next(action);