@hyperlane-xyz/widgets
Version:
Common react components for Hyperlane projects
71 lines • 2.47 kB
JavaScript
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