Formatting not working... somehow pre-populated
This commit is contained in:
@ -307,34 +307,153 @@ export let getTrackIcon = function(current_track = false, core = false){
|
||||
/**
|
||||
* Format our album objects into a universal format
|
||||
*
|
||||
* @param album obj
|
||||
* @param data obj
|
||||
* @return album obj
|
||||
**/
|
||||
export let formatAlbum = function(data){
|
||||
var album = {
|
||||
uri: null,
|
||||
name: null,
|
||||
type: null,
|
||||
artists_uris: null,
|
||||
tracks_uris: null,
|
||||
release_date: null,
|
||||
popularity: null,
|
||||
images: null
|
||||
};
|
||||
var album = {};
|
||||
console.log("VANILLA",album);
|
||||
var fields = [
|
||||
'uri',
|
||||
'name',
|
||||
'type',
|
||||
'provider',
|
||||
'artists_uris',
|
||||
'tracks_uris',
|
||||
'release_date',
|
||||
'popularity',
|
||||
'images'
|
||||
];
|
||||
|
||||
// Loop fields and import from data
|
||||
for (var key in album){
|
||||
if (album.hasOwnProperty(key) && data.hasOwnProperty(key)){
|
||||
album[key] = data[key];
|
||||
for (var field of fields){
|
||||
if (data.hasOwnProperty(field)){
|
||||
album[field] = data[field];
|
||||
console.log(field, data[field]);
|
||||
}
|
||||
}
|
||||
|
||||
if (data.date) album.release_date = data.date;
|
||||
console.log("FORMATTED",album);
|
||||
|
||||
if (data.date && !album.date) album.release_date = data.date;
|
||||
|
||||
return album;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Format our artist objects into a universal format
|
||||
*
|
||||
* @param data obj
|
||||
* @return artist obj
|
||||
**/
|
||||
export let formatArtist = function(data){
|
||||
var artist = {}
|
||||
var fields = [
|
||||
'uri',
|
||||
'name',
|
||||
'type',
|
||||
'provider',
|
||||
'popularity',
|
||||
'images',
|
||||
'biography',
|
||||
'biography_link',
|
||||
'followers',
|
||||
'related_artists_uris',
|
||||
'albums_uris',
|
||||
'tracks_uris'
|
||||
];
|
||||
|
||||
// Loop fields and import from data
|
||||
for (var field of fields){
|
||||
if (data.hasOwnProperty(field)){
|
||||
artist[field] = data[field];
|
||||
}
|
||||
}
|
||||
|
||||
return artist;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Format tracks into our universal format
|
||||
*
|
||||
* @param tracks = object or array of objects
|
||||
* @return array
|
||||
**/
|
||||
export let formatTracks = function(tracks){
|
||||
|
||||
if (!tracks || tracks === undefined){
|
||||
return null;
|
||||
}
|
||||
|
||||
// Handle single records
|
||||
var singular = false;
|
||||
if (tracks.constructor !== Array){
|
||||
tracks = [tracks];
|
||||
singular = true;
|
||||
}
|
||||
|
||||
var formatted = [];
|
||||
for (var i = 0; i < tracks.length; i++){
|
||||
|
||||
// Nested track object (eg in spotify playlist)
|
||||
if (tracks[i].track && isObject(tracks[i].track)){
|
||||
var track = Object.assign({}, tracks[i].track);
|
||||
|
||||
// Copy supporting values
|
||||
if (tracks[i].added_by){
|
||||
track.added_by = tracks[i].added_by;
|
||||
}
|
||||
if (tracks[i].added_at){
|
||||
track.added_at = tracks[i].added_at;
|
||||
}
|
||||
if (tracks[i].tlid){
|
||||
track.tlid = tracks[i].tlid;
|
||||
}
|
||||
|
||||
} else {
|
||||
var track = Object.assign({}, tracks[i]);
|
||||
}
|
||||
|
||||
if (track.duration_ms){
|
||||
track.duration = track.duration_ms;
|
||||
} else if (track.length){
|
||||
track.duration = track.length;
|
||||
}
|
||||
|
||||
if (track.track_no){
|
||||
track.track_number = track.track_no;
|
||||
} else if (track.track_number){
|
||||
track.track_number = track.track_number;
|
||||
}
|
||||
|
||||
if (track.disc_no){
|
||||
track.disc_number = track.disc_no;
|
||||
}
|
||||
|
||||
if (track.release_date){
|
||||
track.date = track.release_date;
|
||||
}
|
||||
|
||||
// Copy images from albums (if applicable)
|
||||
if (track.album && track.album.images){
|
||||
if (!track.images || track.images.length > 0){
|
||||
track.images = track.album.images;
|
||||
}
|
||||
}
|
||||
|
||||
formatted.push(track);
|
||||
}
|
||||
|
||||
if (singular){
|
||||
return formatted[0];
|
||||
} else {
|
||||
return formatted;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Collate an object with external references into a fully self-contained object
|
||||
* We merge *_uris references (ie tracks_uris) into the main object
|
||||
@ -422,85 +541,6 @@ export let collateObject = function(object, indexes = {}){
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Format tracks into our universal format
|
||||
*
|
||||
* @param tracks = object or array of objects
|
||||
* @return array
|
||||
**/
|
||||
export let formatTracks = function(tracks){
|
||||
|
||||
if (!tracks || tracks === undefined){
|
||||
return null;
|
||||
}
|
||||
|
||||
// Handle single records
|
||||
var singular = false;
|
||||
if (tracks.constructor !== Array){
|
||||
tracks = [tracks];
|
||||
singular = true;
|
||||
}
|
||||
|
||||
var formatted = [];
|
||||
for (var i = 0; i < tracks.length; i++){
|
||||
|
||||
// Nested track object (eg in spotify playlist)
|
||||
if (tracks[i].track && isObject(tracks[i].track)){
|
||||
var track = Object.assign({}, tracks[i].track);
|
||||
|
||||
// Copy supporting values
|
||||
if (tracks[i].added_by){
|
||||
track.added_by = tracks[i].added_by;
|
||||
}
|
||||
if (tracks[i].added_at){
|
||||
track.added_at = tracks[i].added_at;
|
||||
}
|
||||
if (tracks[i].tlid){
|
||||
track.tlid = tracks[i].tlid;
|
||||
}
|
||||
|
||||
} else {
|
||||
var track = Object.assign({}, tracks[i]);
|
||||
}
|
||||
|
||||
if (track.duration_ms){
|
||||
track.duration = track.duration_ms;
|
||||
} else if (track.length){
|
||||
track.duration = track.length;
|
||||
}
|
||||
|
||||
if (track.track_no){
|
||||
track.track_number = track.track_no;
|
||||
} else if (track.track_number){
|
||||
track.track_number = track.track_number;
|
||||
}
|
||||
|
||||
if (track.disc_no){
|
||||
track.disc_number = track.disc_no;
|
||||
}
|
||||
|
||||
if (track.release_date){
|
||||
track.date = track.release_date;
|
||||
}
|
||||
|
||||
// Copy images from albums (if applicable)
|
||||
if (track.album && track.album.images){
|
||||
if (!track.images || track.images.length > 0){
|
||||
track.images = track.album.images;
|
||||
}
|
||||
}
|
||||
|
||||
formatted.push(track);
|
||||
}
|
||||
|
||||
if (singular){
|
||||
return formatted[0];
|
||||
} else {
|
||||
return formatted;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@ -460,8 +460,9 @@ const CoreMiddleware = (function(){
|
||||
var artists_loaded = [];
|
||||
var tracks_loaded = [];
|
||||
|
||||
action.albums.forEach(raw_album => {
|
||||
for (var raw_album of action.albums){
|
||||
var album = helpers.formatAlbum(raw_album);
|
||||
console.log(album)
|
||||
|
||||
if (albums_index[album.uri]){
|
||||
album = Object.assign({}, albums_index[album.uri], album);
|
||||
@ -482,19 +483,12 @@ const CoreMiddleware = (function(){
|
||||
}
|
||||
|
||||
albums_loaded.push(album);
|
||||
});
|
||||
};
|
||||
|
||||
action.albums = albums_loaded;
|
||||
|
||||
store.dispatch({
|
||||
type: 'ARTISTS_LOADED',
|
||||
artists: artists_loaded
|
||||
});
|
||||
|
||||
store.dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: tracks_loaded
|
||||
});
|
||||
store.dispatch(coreActions.artistsLoaded(artists_loaded));
|
||||
store.dispatch(coreActions.tracksLoaded(tracks_loaded));
|
||||
|
||||
next(action);
|
||||
break
|
||||
@ -504,31 +498,34 @@ const CoreMiddleware = (function(){
|
||||
var artists_loaded = [];
|
||||
var tracks_loaded = [];
|
||||
|
||||
action.artists.forEach(artist => {
|
||||
action.artists.forEach(raw_artist => {
|
||||
var artist = helpers.formatArtist(raw_artist);
|
||||
|
||||
// Already have an artist in the index
|
||||
if (artists_index[artist.uri]){
|
||||
|
||||
// if we've already got images, remove and add as additional_images
|
||||
// Don't replace existing images, instead add them as supplementary
|
||||
// this is to prevent LastFM overwriting Spotify images
|
||||
if (artists_index[artist.uri].images){
|
||||
artist.images_additional = artist.images
|
||||
delete artist.images
|
||||
artist.images_additional = artist.images;
|
||||
delete artist.images;
|
||||
}
|
||||
|
||||
artist = Object.assign({}, artists_index[artist.uri], artist);
|
||||
}
|
||||
|
||||
// Migrate nested tracks objects into references to our tracks index
|
||||
if (artist.tracks){
|
||||
var tracks = helpers.formatTracks(artist.tracks);
|
||||
if (raw_artist.tracks){
|
||||
var tracks = helpers.formatTracks(raw_artist.tracks);
|
||||
var tracks_uris = helpers.arrayOf('uri', tracks);
|
||||
artist.tracks_uris = tracks_uris;
|
||||
delete artist.tracks;
|
||||
tracks_loaded = [...tracks_loaded, ...tracks];
|
||||
}
|
||||
|
||||
artists_loaded.push(artist);
|
||||
});
|
||||
|
||||
|
||||
action.artists = artists_loaded;
|
||||
|
||||
store.dispatch(coreActions.tracksLoaded(tracks_loaded));
|
||||
|
||||
@ -1000,17 +1000,11 @@ export function getRecommendations(uris = [], limit = 20, tunabilities = null){
|
||||
}
|
||||
|
||||
if (albums.length > 0){
|
||||
dispatch({
|
||||
type: 'ALBUMS_LOADED',
|
||||
albums: albums
|
||||
});
|
||||
dispatch(coreActions.albumsLoaded(albums));
|
||||
}
|
||||
|
||||
if (tracks.length > 0){
|
||||
dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: tracks
|
||||
});
|
||||
dispatch(coreActions.tracksLoaded(tracks));
|
||||
}
|
||||
|
||||
dispatch({
|
||||
@ -1184,12 +1178,9 @@ export function getArtists(uris){
|
||||
album: artist.albums[i]
|
||||
});
|
||||
}
|
||||
artist.albums = helpers.arrayOf('uri',artist.albums)
|
||||
artist.albums_uris = helpers.arrayOf('uri',artist.albums)
|
||||
artist.albums_more = artist.albums.next
|
||||
dispatch({
|
||||
type: 'ARTIST_LOADED',
|
||||
artist: artist
|
||||
});
|
||||
dispatch(coreActions.artistLoaded(artist));
|
||||
}
|
||||
},
|
||||
error => {
|
||||
|
||||
Reference in New Issue
Block a user