Skip to content

Commit

Permalink
Refactor media type check
Browse files Browse the repository at this point in the history
  • Loading branch information
michaeljscript committed Mar 22, 2023
1 parent c0a9b15 commit ac2278b
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions src/components/NftPreview/NftPreview.tsx
Expand Up @@ -3,7 +3,7 @@ import {Image, ImageResizeMode, ImageStyle, StyleProp} from 'react-native'
import {SvgUri} from 'react-native-svg'

import placeholder from '../../assets/img/nft-placeholder.png'
import {isString, YoroiNft} from '../../yoroi-wallets'
import {isArray, isString, YoroiNft} from '../../yoroi-wallets'

export const NftPreview = ({
nft,
Expand All @@ -25,10 +25,14 @@ export const NftPreview = ({
blurRadius?: number
}) => {
const uri = showThumbnail ? nft.thumbnail : nft.logo
const isUriSvg = uri?.toLowerCase().endsWith('.svg') || isSvgMediaType(nft.metadata.originalMetadata?.mediaType)
nft.metadata.originalMetadata?.files?.some((file) => file.src === uri && isSvgMediaType(file.mediaType))
const isUriSvg =
isString(uri) &&
(uri.toLowerCase().endsWith('.svg') ||
isSvgMediaType(nft.metadata.originalMetadata?.mediaType) ||
isSvgMediaType(getNftFilenameMediaType(nft, uri)))
const shouldShowPlaceholder = !isString(uri) || showPlaceholder || (isUriSvg && blurRadius !== undefined)

if (!isString(uri) || showPlaceholder || (isUriSvg && blurRadius !== undefined)) {
if (shouldShowPlaceholder) {
// Since SvgUri does not support blur radius, we show a placeholder
return <Image source={placeholder} style={[style, {width, height}]} resizeMode={resizeMode ?? 'contain'} />
}
Expand Down Expand Up @@ -58,3 +62,11 @@ export const NftPreview = ({
const isSvgMediaType = (mediaType: string | undefined): boolean => {
return mediaType === 'image/svg+xml'
}

const getNftFilenameMediaType = (nft: YoroiNft, filename: string): string | undefined => {
const files = nft.metadata.originalMetadata?.files ?? []
const file = files.find((file) => {
return isArray(file.src) ? file.src.join('') === filename : file.src === filename
})
return file?.mediaType
}

0 comments on commit ac2278b

Please sign in to comment.