const image = props.image; const imageSrc = props.imageSrc; const className = props.className; const style = props.style; const alt = props.alt; const fallbackUrl = props.fallbackUrl; const thumbnail = props.thumbnail; State.init({ image, }); if (JSON.stringify(image) !== JSON.stringify(state.image)) { State.update({ image, imageUrl: null, }); } function toUrl(image) { return ( (image.ipfs_cid ? `https://ipfs.near.social/ipfs/${image.ipfs_cid}` : image.url) || fallbackUrl ); } const thumb = (imageUrl) => thumbnail && imageUrl && !imageUrl.startsWith("data:image/") ? `https://i.near.social/${thumbnail}/${imageUrl}` : imageUrl; return image.nft.contractId && image.nft.tokenId ? ( <Widget src="mob.near/widget/NftImage" props={{ className, style, alt, nft: image.nft, thumbnail, fallbackUrl, }} /> ) : ( <img className={className} style={style} src={ imageSrc ? imageSrc : state.imageUrl ? thumb(state.imageUrl) : thumb(toUrl(image)) } alt={alt} onError={() => { if (state.imageUrl !== fallbackUrl) { State.update({ imageUrl: fallbackUrl, }); } }} /> );