@web3-onboard/react
Version:
A collection of React hooks for integrating Web3-Onboard in to React and Next.js projects. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardised spec compliant web3 providers for all supported w
34 lines (33 loc) • 1.24 kB
JavaScript
import { useCallback, useState } from 'react';
import { useWeb3Onboard } from '../context.js';
import { useAppState } from './useAppState.js';
export const useConnectWallet = () => {
const web3Onboard = useWeb3Onboard();
const { connectWallet, disconnectWallet } = web3Onboard;
const wallets = useAppState('wallets');
const wallet = wallets[0] || null;
const [connecting, setConnecting] = useState(false);
const connect = useCallback(async (options) => {
setConnecting(true);
const walletState = await connectWallet(options);
setConnecting(false);
return walletState;
}, []);
const disconnect = useCallback(async ({ label }) => {
setConnecting(true);
const walletState = await disconnectWallet({ label });
setConnecting(false);
return walletState;
}, []);
const updateBalances = web3Onboard.state.actions.updateBalances;
const setWalletModules = web3Onboard.state.actions.setWalletModules;
const setPrimaryWallet = web3Onboard.state.actions.setPrimaryWallet;
return [
{ wallet, connecting },
connect,
disconnect,
updateBalances,
setWalletModules,
setPrimaryWallet
];
};