UNPKG

@hyperlane-xyz/widgets

Version:

Common react components for Hyperlane projects

71 lines 2.47 kB
import { WalletDecryptPermission } from '@provablehq/aleo-wallet-standard'; import { useEffect, useMemo, useState } from 'react'; import { ProtocolType, assert } from '@hyperlane-xyz/utils'; import { useAleoPopup } from './aleo/AleoProviders.js'; import { getAdapter, getAleoNetwork } from './aleo/utils.js'; export function useAleoAccount(_multiProvider) { const [account, setAccount] = useState(undefined); useEffect(() => { const adapterInstance = getAdapter(); const handleAccountChange = () => { setAccount(adapterInstance.account); }; const handleAccountSwitched = async () => { await adapterInstance.connect(getAleoNetwork(), WalletDecryptPermission.AutoDecrypt, []); }; adapterInstance.on('connect', handleAccountChange); adapterInstance.on('disconnect', handleAccountChange); adapterInstance.on('accountChange', handleAccountSwitched); handleAccountChange(); return () => { adapterInstance.off('connect', handleAccountChange); adapterInstance.off('disconnect', handleAccountChange); adapterInstance.off('accountChange', handleAccountSwitched); }; }, []); return { protocol: ProtocolType.Aleo, addresses: account?.address ? [ { address: account.address, chainName: 'Aleo', }, ] : [], publicKey: undefined, isReady: !!account?.address, }; } export function useAleoWalletDetails() { const [details, setDetails] = useState({ name: undefined, logoUrl: undefined, }); useEffect(() => { if (typeof window === 'undefined') return; const adapterInstance = getAdapter(); setDetails({ name: adapterInstance.name, logoUrl: adapterInstance.icon, }); }, []); return details; } export function useAleoConnectFn() { const popUp = useAleoPopup(); assert(popUp, `AleoPopupProvider is not defined, make sure it is imported and wrapping your application`); return () => { popUp.setShowPopUp(true); }; } export function useAleoDisconnectFn() { return async () => { await getAdapter().disconnect(); }; } export function useAleoActiveChain(_multiProvider) { return useMemo(() => ({}), []); } //# sourceMappingURL=aleoWallet.js.map