Formatting not working... somehow pre-populated

This commit is contained in:
James Barnsley
2018-08-30 17:49:08 +12:00
parent 0e32361c7e
commit 405ef19109
3 changed files with 153 additions and 125 deletions

View File

@ -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;
}
}
/**

View File

@ -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));

View File

@ -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 => {