const image = props.image; const onChange = props.onChange; initState({ url: image.url, nft: image.nft ?? {}, img: { cid: image.ipfs_cid }, }); let localImage = {}; if (state.nft.contractId && state.nft.tokenId) { localImage = { nft: state.nft }; } else if (state.img.cid) { localImage = { ipfs_cid: state.img.cid }; } else if (state.url) { localImage = { url: state.url }; } if (JSON.stringify(props.image) !== JSON.stringify(localImage)) { state.image = localImage; onChange && onChange(localImage); State.update({ image: localImage, }); } return ( <div> <div className="mb-2"> <br /> Upload or choose an NFT <br /> <IpfsImageUpload image={state.img} /> </div> <div className="mb-2"> NFT contract <input type="text" value={state.nft.contractId} /> NFT token id <input type="text" value={state.nft.tokenId} /> </div> {!state.img.cid && state.url && ( <div className="mb-2"> Image URL <input type="text" value={state.url} /> </div> )} </div> );