Skip to content

Commit bfeb878

Browse files
authored
Merge pull request #1605 from AmbireTech/use-nft-proxy
Fix Image component for nfts
2 parents 29d8399 + e683d78 commit bfeb878

File tree

7 files changed

+30
-44
lines changed

7 files changed

+30
-44
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import styles from './Collectible.module.scss'
22

3-
const Collectible = ({ button, handleUri, asset }) => (
3+
const Collectible = ({ button, asset}) =>{
4+
return (
45
<div className={styles.wrapper}>
56
<div className={styles.info}>
67
<div className={styles.iconWrapper}>
7-
<img src={handleUri(asset.data.image)} alt="" className={styles.icon} />
8+
<img src={asset.data.image} alt="" className={styles.icon} />
89
</div>
9-
<h3 className={styles.name}>{asset.data.name}</h3>
10+
<h3 className={styles.name}>{asset.name}</h3>
1011
</div>
1112
{button}
1213
</div>
13-
)
14+
)}
1415

1516
export default Collectible

src/components/Modals/HideCollectibleModal/HideCollectibleModal.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Collectible from './Collectible/Collectible'
77

88
import styles from './HideCollectibleModal.module.scss'
99

10-
const HideCollectibleModal = ({ portfolio, setIsHideCollectiblesModalOpen, handleUri }) => {
10+
const HideCollectibleModal = ({ portfolio, setIsHideCollectiblesModalOpen }) => {
1111
const { hideModal, setOnClose } = useModals()
1212
const { hiddenCollectibles, onAddHiddenCollectible, onRemoveHiddenCollectible, collectibles } =
1313
portfolio
@@ -70,7 +70,6 @@ const HideCollectibleModal = ({ portfolio, setIsHideCollectiblesModalOpen, handl
7070
/>
7171
)
7272
}
73-
handleUri={handleUri}
7473
/>
7574
))
7675
)}

src/components/Wallet/Collectible/Collectible.js

+12-20
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { useParams } from 'react-router-dom'
44
import { Interface } from 'ethers/lib/utils'
55
import { useEffect, useState, useRef, useMemo } from 'react'
66
import { AiOutlineSend } from 'react-icons/ai'
7-
import { BsFillImageFill, BsXLg } from 'react-icons/bs'
7+
import { BsXLg } from 'react-icons/bs'
8+
import FallbackImage from 'resources/icons/fallback.svg'
89
import * as blockies from 'blockies-ts'
910
import { useToasts } from 'hooks/toasts'
1011
import {
@@ -14,7 +15,8 @@ import {
1415
AddressBook,
1516
AddressWarning,
1617
ToolTip,
17-
Panel
18+
Panel,
19+
Image
1820
} from 'components/common'
1921
import ERC721Abi from 'ambire-common/src/constants/abis/ERC721Abi'
2022
import { validateSendNftAddress } from 'lib/validations/formValidations'
@@ -24,22 +26,6 @@ import useConstants from 'hooks/useConstants'
2426

2527
const ERC721 = new Interface(ERC721Abi)
2628

27-
const handleUri = (uri) => {
28-
if (!uri) return ''
29-
uri = uri.startsWith('data:application/json')
30-
? uri.replace('data:application/json;utf8,', '')
31-
: uri
32-
33-
if (uri.split('/').length === 1) return `https://ipfs.io/ipfs/${uri}`
34-
if (uri.split('/')[0] === 'data:image') return uri
35-
if (uri.startsWith('ipfs://'))
36-
return uri.replace(/ipfs:\/\/ipfs\/|ipfs:\/\//g, 'https://ipfs.io/ipfs/')
37-
if (uri.split('/')[2] && uri.split('/')[2].endsWith('mypinata.cloud'))
38-
return `https://ipfs.io/ipfs/${uri.split('/').slice(4).join('/')}`
39-
40-
return uri
41-
}
42-
4329
const Collectible = ({ portfolio, selectedAcc, selectedNetwork, addRequest, addressBook }) => {
4430
const {
4531
constants: { humanizerInfo }
@@ -248,8 +234,14 @@ const Collectible = ({ portfolio, selectedAcc, selectedNetwork, addRequest, addr
248234
</div>
249235

250236
<div className="metadata">
251-
<div className="image" style={{ backgroundImage: `url(${handleUri(metadata.image)})` }}>
252-
{!metadata.image ? <BsFillImageFill /> : null}
237+
<div className="image" >
238+
<Image
239+
alt=""
240+
style={{width:"100%"}}
241+
src={metadata.image}
242+
fallbackImage={FallbackImage}
243+
size={"100%"}
244+
/>
253245
</div>
254246
<div className="info">
255247
<div className="name">{metadata.name}</div>

src/components/Wallet/Collectible/Collectible.scss

+10
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,17 @@
33
#collectible {
44
display: flex;
55
gap: 1.875rem;
6+
.artworkWrapper {
7+
// max-height: $collectible-size;
8+
height: 100%;
9+
align-items: center;
10+
background-color: rgba($c-fiord, 0.2);
611

12+
.artwork {
13+
width: 100%;
14+
// max-height: $collectible-size;
15+
}
16+
}
717
.address {
818
font-family: 'Ubuntu Mono';
919
}

src/components/Wallet/Dashboard/Collectibles/Collectibles.js

+1-17
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,6 @@ import CollectiblesPlaceholder from './CollectiblesPlaceholder/CollectiblesPlace
99
import CollectiblesWrapper from './CollectiblesWrapper/CollectiblesWrapper'
1010
import Collectible from './Collectible/Collectible'
1111

12-
const handleUri = (uri) => {
13-
if (!uri) return ''
14-
uri = uri.startsWith('data:application/json')
15-
? uri.replace('data:application/json;utf8,', '')
16-
: uri
17-
18-
if (uri.split('/').length === 1) return `https://ipfs.io/ipfs/${uri}`
19-
if (uri.split('/')[0] === 'data:image') return uri
20-
if (uri.startsWith('ipfs://'))
21-
return uri.replace(/ipfs:\/\/ipfs\/|ipfs:\/\//g, 'https://ipfs.io/ipfs/')
22-
if (uri.split('/')[2] && uri.split('/')[2].endsWith('mypinata.cloud'))
23-
return `https://ipfs.io/ipfs/${uri.split('/').slice(4).join('/')}`
24-
25-
return uri
26-
}
2712

2813
const Collectibles = ({ portfolio, isPrivateMode, selectedNetwork, footer }) => {
2914
const { showModal } = useModals()
@@ -41,7 +26,6 @@ const Collectibles = ({ portfolio, isPrivateMode, selectedNetwork, footer }) =>
4126
<HideCollectibleModal
4227
portfolio={portfolio}
4328
setIsHideCollectiblesModalOpen={setIsHideCollectiblesModalOpen}
44-
handleUri={handleUri}
4529
/>
4630
)
4731
}
@@ -77,7 +61,7 @@ const Collectibles = ({ portfolio, isPrivateMode, selectedNetwork, footer }) =>
7761
collectionIcon={data && data.image}
7862
collectionName={collectionName}
7963
name={(data && data.name) || name || collectionName}
80-
image={handleUri(data && data.image)}
64+
image={data && data.image}
8165
price={balanceUSD.toFixed(2)}
8266
/>
8367
))

src/components/common/Image/Image.js

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ function Image({
2020
// because the `src` prop is not being attached at all to the <img> tag (I guess JSX omits falsy props for the `src` prop).
2121
// That's the reason why we set `failed` value initially, based on the `src` value.
2222
const [failed, setFailed] = useState(isFailed(src))
23-
2423
useEffect(() => {
2524
setFailed(isFailed(src))
2625
}, [src])

src/config/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ export const SUSHI_SWAP_FRAME_EXCEPTIONS = process.env.REACT_APP_SUSHI_SWAP_FRAM
1313
export const SIGNATURE_VERIFIER_DEBUGGER =
1414
(process.env.REACT_APP_SIGNATURE_VERIFIER_DEBUGGER * 1 && true) || false
1515
export const COINGECKO_API_URL = process.env.COINGECKO_API_URL || 'https://cena.ambire.com/api/v3'
16+
export const NFT_CDN_URL = process.env.REACT_APP_NFT_CDN_URL || 'https://nftcdn.ambire.com'

0 commit comments

Comments
 (0)