Change the code to use either variants or size

Use which one is available. Code is now backwards and forwards compatible.
This commit is contained in:
Mikko Koski 2018-03-01 17:12:04 +02:00
parent 13246c44f6
commit 8cf9b76d52
3 changed files with 33 additions and 11 deletions

View file

@ -62,10 +62,17 @@ const ResponsiveImage = props => {
}
const imageSizes = image.attributes.sizes;
const imageVariants = image.attributes.variants;
const srcSet = nameSet
.map(v => {
const url = imageSizes.find(i => i.name === v.name).url;
const variant = imageVariants && imageVariants[v.name];
// deprecated
// for backwards compatibility only
const size = imageSizes && imageSizes.find(i => i.name === v.name);
const url = (variant || size).url;
return `${url} ${v.size}`;
})
.join(', ');

View file

@ -443,16 +443,23 @@ export class ListingPageComponent extends Component {
</div>
) : null;
const facebookImages = hasImages
? currentListing.images.map(image => {
return image.attributes.sizes.find(i => i.name === 'facebook');
const listingImages = (listing, variantName) =>
(listing.images || [])
.map(image => {
const variants = image.attributes.variants;
const variant = variants && variants[variantName];
// deprecated
// for backwards combatility only
const sizes = image.attributes.sizes;
const size = sizes && sizes.find(i => i.name === variantName);
return variant || size;
})
: [];
const twitterImages = hasImages
? currentListing.images.map(image => {
return image.attributes.sizes.find(i => i.name === 'twitter');
})
: [];
.filter(variant => variant != null);
const facebookImages = listingImages(currentListing, 'facebook');
const twitterImages = listingImages(currentListing, 'twitter');
const schemaImages = JSON.stringify(facebookImages.map(img => img.url));
const siteTitle = config.siteTitle;
const schemaTitle = intl.formatMessage(

View file

@ -24,6 +24,7 @@ import {
instanceOf,
number,
object,
objectOf,
oneOf,
oneOfType,
shape,
@ -86,7 +87,14 @@ propTypes.image = shape({
name: string.isRequired,
url: string.isRequired,
})
).isRequired,
),
variants: objectOf(
shape({
width: number.isRequired,
height: number.isRequired,
url: string.isRequired,
})
),
}),
});