@hyperlane-xyz/widgets
Version:
Common react components for Hyperlane projects
40 lines • 1.45 kB
JavaScript
import { useConnectModal } from '@rainbow-me/rainbowkit';
import { useCallback, useMemo } from 'react';
import { useAccount, useDisconnect } from 'wagmi';
import { ProtocolType } from '@hyperlane-xyz/utils';
export function useEthereumAccount(_multiProvider) {
const { address, isConnected, connector } = useAccount();
const isReady = !!(address && isConnected && connector);
return useMemo(() => ({
protocol: ProtocolType.Ethereum,
addresses: address ? [{ address: `${address}` }] : [],
isReady,
}), [address, isReady]);
}
export function useEthereumWalletDetails() {
const { connector } = useAccount();
const name = connector?.name;
const logoUrl = connector?.icon;
return useMemo(() => ({
name,
logoUrl,
}), [name, logoUrl]);
}
export function useEthereumConnectFn() {
const { openConnectModal } = useConnectModal();
return useCallback(() => openConnectModal?.(), [openConnectModal]);
}
export function useEthereumDisconnectFn() {
const { disconnectAsync } = useDisconnect();
return disconnectAsync;
}
export function useEthereumActiveChain(multiProvider) {
const { chain } = useAccount();
return useMemo(() => ({
chainDisplayName: chain?.name,
chainName: chain
? multiProvider.tryGetChainMetadata(chain.id)?.name
: undefined,
}), [chain, multiProvider]);
}
//# sourceMappingURL=ethereumWallet.js.map