import React, { useState, useEffect } from "react"; import { QueryPreservingLink } from "src/services/network/networkProvider"; import { isValidAddr } from "src/utils/Utils"; import { fromBech32Address, toBech32Address } from "@zilliqa-js/crypto"; import { validation } from "@zilliqa-js/util"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCopy } from "@fortawesome/free-regular-svg-icons"; import { faRetweet } from "@fortawesome/free-solid-svg-icons"; import CustomToast from "../CustomToast"; import "../Disp.css"; interface IProps { addr: string; isLinked: boolean; } const AddressDisp: React.FC = ({ addr, isLinked }) => { const [showToast, setShowToast] = useState(false); const [addrPair, setAddrPair] = useState(null); // [bech32, hex] const [toggle, setToggle] = useState(0); useEffect(() => { if (isValidAddr(addr)) { if (validation.isBech32(addr)) setAddrPair([addr, fromBech32Address(addr).toLowerCase()]); else { try { setAddrPair([toBech32Address(addr), addr]); } catch (e) { //Ignore the catch } } } }, [addr]); return ( addrPair && ( <> {showToast && ( )}
{isLinked ? ( {addrPair[toggle]} ) : ( addrPair[toggle] )}
{ setToggle((prevToggle) => (prevToggle === 0 ? 1 : 0)); }} className="mr-2 disp-btn" >
{ navigator.clipboard.writeText(addrPair[toggle]); setShowToast(true); }} className="disp-btn" >
) ); }; export default AddressDisp;