import React, { useContext } from "react"; import { useImage } from "react-image"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCoins } from "@fortawesome/free-solid-svg-icons/faCoins"; import { tokenLogoURL } from "../url"; import { RuntimeContext } from "../useRuntime"; import { ChecksummedAddress } from "../types"; type TokenLogoProps = { chainId: number; address: ChecksummedAddress; name: string; }; const TokenLogo: React.FC<TokenLogoProps> = ({ chainId, address, name }) => { const { config } = useContext(RuntimeContext); const srcList: string[] = []; if (config) { srcList.push(tokenLogoURL(config.assetsURLPrefix ?? "", chainId, address)); } const { src, isLoading } = useImage({ srcList, useSuspense: false }); return ( <div className="flex items-center justify-center text-gray-400 w-5 h-5"> {src && ( <img className="max-w-full max-h-full" src={src} alt={`${name} logo`} /> )} {!src && !isLoading && <FontAwesomeIcon icon={faCoins} size="1x" />} </div> ); }; export default React.memo(TokenLogo);