Playlists tracks going to be a beast
This commit is contained in:
@ -18,60 +18,14 @@ export default function reducer(core = {}, action){
|
||||
return Object.assign({}, core, { current_tracklist: action.tracklist });
|
||||
|
||||
case 'MOPIDY_CURRENTTLTRACK':
|
||||
if (!action.data) return core
|
||||
|
||||
var current_tracklist = []
|
||||
Object.assign(current_tracklist, core.current_tracklist)
|
||||
|
||||
for (var i = 0; i < current_tracklist.length; i++){
|
||||
Object.assign(
|
||||
current_tracklist[i],
|
||||
{ playing: (current_tracklist[i].tlid == action.data.tlid ) }
|
||||
)
|
||||
if (!action.data){
|
||||
return core;
|
||||
}
|
||||
|
||||
return Object.assign({}, core, {
|
||||
current_tracklist: current_tracklist,
|
||||
current_track: action.data.track.uri
|
||||
current_tracklist: action.current_tracklist,
|
||||
current_track: action.current_track
|
||||
});
|
||||
|
||||
case 'TRACK_LOADED':
|
||||
if (!action.key || !action.track) return core
|
||||
|
||||
var tracks = Object.assign({}, core.tracks)
|
||||
if (tracks[action.key]){
|
||||
var track = Object.assign(
|
||||
{},
|
||||
tracks[action.key],
|
||||
helpers.formatTracks(action.track)
|
||||
);
|
||||
} else {
|
||||
var track = Object.assign(
|
||||
{},
|
||||
helpers.formatTracks(action.track)
|
||||
);
|
||||
}
|
||||
|
||||
tracks[action.key] = track
|
||||
return Object.assign({}, core, { tracks: tracks });
|
||||
|
||||
case 'TRACKS_LOADED':
|
||||
var tracks = Object.assign({}, core.tracks)
|
||||
|
||||
for (var i = 0; i < action.tracks.length; i++){
|
||||
var track = action.tracks[i]
|
||||
if (tracks[track.uri] !== undefined){
|
||||
track = Object.assign(
|
||||
{},
|
||||
tracks[track.uri],
|
||||
track
|
||||
);
|
||||
}
|
||||
tracks[track.uri] = helpers.formatTracks(track);
|
||||
}
|
||||
|
||||
return Object.assign({}, core, { tracks: tracks });
|
||||
|
||||
case 'PUSHER_QUEUE_METADATA':
|
||||
case 'PUSHER_QUEUE_METADATA_CHANGED':
|
||||
var tracklist = Object.assign([], core.current_tracklist)
|
||||
@ -153,37 +107,27 @@ export default function reducer(core = {}, action){
|
||||
|
||||
|
||||
/**
|
||||
* Albums
|
||||
* Index updates
|
||||
* These actions are only ever called by middleware after we've digested one more many assets
|
||||
* and appended to their relevant index.
|
||||
**/
|
||||
|
||||
case 'ALBUM_LOADED':
|
||||
var albums = Object.assign([], core.albums)
|
||||
case 'UPDATE_TRACKS_INDEX':
|
||||
return Object.assign({}, core, { tracks: action.tracks });
|
||||
|
||||
if (albums[action.key]){
|
||||
var album = Object.assign({}, albums[action.key], action.album)
|
||||
} else {
|
||||
var album = Object.assign({}, action.album)
|
||||
}
|
||||
case 'UPDATE_ALBUMS_INDEX':
|
||||
return Object.assign({}, core, { albums: action.albums });
|
||||
|
||||
album.tracks = helpers.formatTracks(album.tracks);
|
||||
albums[action.key] = album
|
||||
case 'UPDATE_ARTISTS_INDEX':
|
||||
return Object.assign({}, core, { artists: action.artists });
|
||||
|
||||
return Object.assign({}, core, { albums: albums });
|
||||
case 'UPDATE_PLAYLISTS_INDEX':
|
||||
return Object.assign({}, core, { playlists: action.playlists });
|
||||
|
||||
case 'ALBUMS_LOADED':
|
||||
var albums = Object.assign([], core.albums)
|
||||
case 'UPDATE_USERS_INDEX':
|
||||
return Object.assign({}, core, { users: action.users });
|
||||
|
||||
for (var i = 0; i < action.albums.length; i++){
|
||||
var album = action.albums[i]
|
||||
if (albums[album.uri]){
|
||||
album = Object.assign({}, albums[album.uri], album)
|
||||
}
|
||||
|
||||
album.tracks = helpers.formatTracks(album.tracks);
|
||||
albums[album.uri] = album
|
||||
}
|
||||
|
||||
return Object.assign({}, core, { albums: albums });
|
||||
|
||||
case 'NEW_RELEASES_LOADED':
|
||||
if (!action.uris){
|
||||
@ -204,54 +148,6 @@ export default function reducer(core = {}, action){
|
||||
});
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Artists
|
||||
**/
|
||||
|
||||
case 'ARTIST_LOADED':
|
||||
var artists = Object.assign([], core.artists)
|
||||
|
||||
if (artists[action.key]){
|
||||
|
||||
// if we've already got images, remove and add as additional_images
|
||||
// this is to prevent LastFM overwriting Spotify images
|
||||
if (artists[action.key].images){
|
||||
action.artist.images_additional = action.artist.images
|
||||
delete action.artist.images
|
||||
}
|
||||
|
||||
var artist = Object.assign({}, artists[action.key], action.artist)
|
||||
if (artist.tracks){
|
||||
artist.tracks = helpers.formatTracks(artist.tracks);
|
||||
}
|
||||
} else {
|
||||
var artist = Object.assign({}, action.artist)
|
||||
if (artist.tracks){
|
||||
artist.tracks = helpers.formatTracks(artist.tracks);
|
||||
}
|
||||
}
|
||||
|
||||
artists[action.key] = artist
|
||||
return Object.assign({}, core, { artists: artists });
|
||||
|
||||
case 'ARTISTS_LOADED':
|
||||
var artists = Object.assign([], core.artists)
|
||||
|
||||
for (var i = 0; i < action.artists.length; i++){
|
||||
var artist = action.artists[i]
|
||||
if (typeof(artists[artist.uri]) !== 'undefined'){
|
||||
artist = Object.assign({}, artists[artist.uri], artist)
|
||||
}
|
||||
|
||||
if (artist.tracks){
|
||||
artist.tracks = helpers.formatTracks(artist.tracks);
|
||||
}
|
||||
artists[artist.uri] = artist
|
||||
}
|
||||
|
||||
return Object.assign({}, core, { artists: artists });
|
||||
|
||||
case 'ARTIST_ALBUMS_LOADED':
|
||||
var artists = Object.assign([], core.artists)
|
||||
var albums_uris = []
|
||||
@ -270,22 +166,6 @@ export default function reducer(core = {}, action){
|
||||
return Object.assign({}, core, { artists: artists });
|
||||
|
||||
|
||||
/**
|
||||
* User profiles
|
||||
**/
|
||||
|
||||
case 'USER_LOADED':
|
||||
var users = Object.assign([], core.users)
|
||||
|
||||
if (users[action.key]){
|
||||
var user = Object.assign({}, users[action.key], action.user)
|
||||
} else {
|
||||
var user = Object.assign({}, action.user)
|
||||
}
|
||||
|
||||
users[action.key] = user
|
||||
return Object.assign({}, core, { users: users });
|
||||
|
||||
case 'USER_PLAYLISTS_LOADED':
|
||||
var users = Object.assign([], core.users)
|
||||
var playlists_uris = []
|
||||
@ -310,38 +190,6 @@ export default function reducer(core = {}, action){
|
||||
* Playlists
|
||||
**/
|
||||
|
||||
case 'PLAYLIST_LOADED':
|
||||
case 'PLAYLIST_UPDATED':
|
||||
var playlists = Object.assign([], core.playlists)
|
||||
|
||||
if (typeof(playlists[action.key]) !== 'undefined'){
|
||||
var existing_playlist = Object.assign({}, playlists[action.key])
|
||||
|
||||
if (existing_playlist.tracks && action.playlist.tracks){
|
||||
var tracks = [...existing_playlist.tracks, ...action.playlist.tracks]
|
||||
} else if (existing_playlist.tracks){
|
||||
var tracks = existing_playlist.tracks
|
||||
} else if (action.playlist.tracks){
|
||||
var tracks = action.playlist.tracks
|
||||
} else {
|
||||
var tracks = []
|
||||
}
|
||||
|
||||
var merged_playlist = Object.assign(
|
||||
{},
|
||||
existing_playlist,
|
||||
action.playlist,
|
||||
{
|
||||
tracks: helpers.formatTracks(tracks)
|
||||
}
|
||||
)
|
||||
} else {
|
||||
var merged_playlist = Object.assign({}, action.playlist)
|
||||
}
|
||||
|
||||
playlists[action.key] = merged_playlist
|
||||
return Object.assign({}, core, { playlists: playlists })
|
||||
|
||||
case 'PLAYLIST_KEY_UPDATED':
|
||||
var playlists = Object.assign([], core.playlists)
|
||||
|
||||
@ -355,43 +203,6 @@ export default function reducer(core = {}, action){
|
||||
delete playlists[action.key]
|
||||
playlists[playlist.uri] = playlist
|
||||
|
||||
return Object.assign({}, core, { playlists: playlists })
|
||||
|
||||
case 'PLAYLISTS_LOADED':
|
||||
var playlists = Object.assign([], core.playlists)
|
||||
|
||||
for (var i = 0; i < action.playlists.length; i++){
|
||||
var loaded_playlist = action.playlists[i]
|
||||
|
||||
if (typeof(playlists[loaded_playlist.uri]) !== 'undefined'){
|
||||
var existing_playlist = Object.assign({}, playlists[loaded_playlist.uri])
|
||||
|
||||
if (existing_playlist.tracks && loaded_playlist.tracks){
|
||||
var tracks = [...existing_playlist.tracks, ...loaded_playlist.tracks]
|
||||
} else if (existing_playlist.tracks){
|
||||
var tracks = existing_playlist.tracks
|
||||
} else if (loaded_playlist.tracks){
|
||||
var tracks = loaded_playlist.tracks
|
||||
} else {
|
||||
var tracks = []
|
||||
}
|
||||
|
||||
var merged_playlist = Object.assign(
|
||||
{},
|
||||
existing_playlist,
|
||||
loaded_playlist,
|
||||
{
|
||||
tracks: helpers.formatTracks(tracks)
|
||||
}
|
||||
)
|
||||
|
||||
} else {
|
||||
var merged_playlist = loaded_playlist
|
||||
}
|
||||
|
||||
playlists[merged_playlist.uri] = merged_playlist
|
||||
}
|
||||
|
||||
return Object.assign({}, core, { playlists: playlists });
|
||||
|
||||
case 'PLAYLIST_LOADED_MORE_TRACKS':
|
||||
|
||||
Reference in New Issue
Block a user