Artst images now an array of objects for better gallery support (needs testing)

This commit is contained in:
James Barnsley
2018-10-29 16:24:04 +13:00
parent ba1d4295e5
commit ec56a7a67f
11 changed files with 13798 additions and 10490 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -98,7 +98,7 @@
// Release details
// These are automatically injected to built HTML
var build = "1540714408";
var build = "1540783351";
var version = "3.28.1";
// Construct the script tag

View File

@ -98,9 +98,13 @@ export default class GridItem extends React.Component{
}
var images = null
if (this.props.item.images){
images = this.props.item.images
if (Array.isArray(this.props.item.images)){
images = this.props.item.images[0];
} else {
images = this.props.item.images;
}
} else if (this.props.item.icons){
images = this.props.item.icons
images = this.props.item.icons;
}
return (

View File

@ -16,17 +16,23 @@ export default class RelatedArtists extends React.Component{
<div className="list related-artist-list">
{
this.props.artists.map((artist, index) => {
var images = artist.images;
if (Array.isArray(images)){
images = images[0];
}
if (artist.uri){
return (
<URILink type="artist" uri={artist.uri} key={artist.uri} className="artist">
<Thumbnail circle={true} size="small" images={artist.images} />
<Thumbnail circle={true} size="small" images={images} />
<span className="name">{ artist.name }</span>
</URILink>
)
} else {
return (
<span key={artist.uri} className="artist">
<Thumbnail circle={true} size="small" images={artist.images} />
<Thumbnail circle={true} size="small" images={images} />
<span className="name">{ artist.name }</span>
</span>
)

View File

@ -459,8 +459,10 @@ export let formatArtist = function(data){
}
}
if (artist.images && !artist.images.formatted){
artist.images = formatImages(artist.images);
if (data.images){
artist.images = [
formatImages(artist.images)
];
}
if (data.followers && data.followers.total !== undefined){

View File

@ -631,12 +631,11 @@ const CoreMiddleware = (function(){
// Already have an artist in the index
if (artists_index[artist.uri]){
// 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;
}
// And we've already got some images, make sure we merge the arrays,
// rather than overwriting
if (artists_index[artist.uri].images && artist.images){
artist.images = [...artists_index[artist.uri].images, ...artist.images];
}
artist = Object.assign({}, artists_index[artist.uri], artist);
}
@ -652,7 +651,6 @@ const CoreMiddleware = (function(){
artists_loaded.push(artist);
};
action.artists = artists_loaded;
if (tracks_loaded.length > 0){

View File

@ -2009,9 +2009,9 @@ const MopidyMiddleware = (function(){
var existing_artist = store.getState().core.artists[artist.uri];
if (existing_artist && !existing_artist.images){
if (artist.musicbrainz_id){
store.dispatch(lastfmActions.getArtist(artist.uri, false, artist.musicbrainz_id))
store.dispatch(lastfmActions.getArtist(artist.uri, false, artist.musicbrainz_id));
} else {
store.dispatch(lastfmActions.getArtist(artist.uri, artist.name))
store.dispatch(lastfmActions.getArtist(artist.uri, artist.name));
}
}
})

View File

@ -41,7 +41,7 @@ class Artist extends React.Component{
if (nextProps.params.uri != this.props.params.uri){
this.props.coreActions.loadArtist(nextProps.params.uri);
}else if (!this.props.mopidy_connected && nextProps.mopidy_connected){
} else if (!this.props.mopidy_connected && nextProps.mopidy_connected){
if (helpers.uriSource(this.props.params.uri ) != 'spotify'){
this.props.coreActions.loadArtist(nextProps.params.uri);
}
@ -146,12 +146,23 @@ class Artist extends React.Component{
)
case 'about':
var thumbnails = [];
if (artist.images && artist.images.length > 0){
for (var i = 0; i < artist.images.length; i++){
thumbnails.push(
<div className="tile thumbnail-wrapper" key={i}>
<Thumbnail size="huge" canZoom images={artist.images[i]} />
</div>
);
}
}
return (
<div className="body about">
<div className="col col--w40 tiles artist-stats">
{artist.images ? <div className="tile thumbnail-wrapper"><Thumbnail size="huge" canZoom images={artist.images} /></div> : null}
{artist.images_additional ? <div className="tile thumbnail-wrapper"><Thumbnail size="huge" canZoom images={artist.images_additional} /></div> : null}
{thumbnails}
{artist.followers ? <div className="tile"><span className="content"><Icon type="fontawesome" name="users" />{artist.followers.toLocaleString()} followers</span></div> : null}
{artist.popularity ? <div className="tile"><span className="content"><Icon type="fontawesome" name="fire" />{artist.popularity }% popularity</span></div> : null}
{artist.listeners ? <div className="tile"><span className="content"><Icon type="fontawesome" name="headphones" />{ artist.listeners.toLocaleString() } listeners</span></div> : null }
@ -278,8 +289,8 @@ class Artist extends React.Component{
}
}
if (this.props.artist && this.props.artist.images){
var image = this.props.artist.images.huge;
if (this.props.artist && this.props.artist.images && this.props.artist.images.length > 0){
var image = this.props.artist.images[0].huge;
} else {
var image = null;
}