UNPKG

@hyperlane-xyz/widgets

Version:

Common react components for Hyperlane projects

80 lines 2.74 kB
import { DataRequestBuilder, generateRolaChallenge, } from '@radixdlt/radix-dapp-toolkit'; import { useCallback, useEffect, useMemo } from 'react'; import { ProtocolType } from '@hyperlane-xyz/utils'; import { widgetLogger } from '../logger.js'; import { useAccount } from './radix/AccountContext.js'; import { usePopup } from './radix/RadixProviders.js'; import { useRdt } from './radix/hooks/useRdt.js'; const logger = widgetLogger.child({ module: 'walletIntegrations/radixWallet', }); const radixWalletDetails = { name: 'Radix Wallet', logoUrl: 'https://raw.githubusercontent.com/radixdlt/radix-dapp-toolkit/refs/heads/main/docs/radix-logo.png', }; export function useRadixAccount(_multiProvider) { const { accounts } = useAccount(); return useMemo(() => ({ protocol: ProtocolType.Radix, addresses: accounts.map((account) => ({ address: account.address, })), publicKey: undefined, isReady: !!accounts.length, }), [accounts]); } export function useRadixWalletDetails() { return radixWalletDetails; } export function useRadixConnectFn() { const rdt = useRdt(); const popUp = usePopup(); const { setAccounts } = useAccount(); useEffect(() => { if (!rdt) return; rdt.walletApi.provideChallengeGenerator(async () => generateRolaChallenge()); }, [rdt]); return useCallback(() => { void (async () => { if (!rdt) { logger.warn('Radix dapp toolkit not defined'); return; } if (!popUp) { logger.warn('Radix wallet popup not defined'); return; } popUp.setShowPopUp(true); try { rdt.walletApi.setRequestData(DataRequestBuilder.accounts().exactly(1).reset()); const result = await rdt.walletApi.sendRequest(); if (result.isOk()) { setAccounts(result.value.accounts.map((p) => ({ address: p.address, }))); } } finally { popUp.setShowPopUp(false); } })(); }, [popUp, rdt, setAccounts]); } export function useRadixDisconnectFn() { const rdt = useRdt(); const { setAccounts } = useAccount(); return useCallback(async () => { if (!rdt) { logger.warn('Radix dapp toolkit not defined'); setAccounts([]); return; } rdt.disconnect(); setAccounts([]); }, [rdt, setAccounts]); } export function useRadixActiveChain(_multiProvider) { return useMemo(() => ({}), []); } //# sourceMappingURL=radixWallet.js.map