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