UNPKG

@mojito-inc/connect-wallet

Version:

Connecting wallet via metamask, wallet connect, email

78 lines (75 loc) 3.5 kB
import { useWallet } from '@solana/wallet-adapter-react'; import { useState, useMemo, useEffect } from 'react'; import { useWalletType } from '../provider/WalletTypeProvider.js'; import { WalletProviderType } from '../constant/index.js'; /* eslint-disable react-hooks/rules-of-hooks */ const useSolanaWalletsMethod = (providerType) => { const { walletType } = useWalletType(); const [provider, setProvider] = useState(null); const isSolanaWallet = useMemo(() => walletType === 'solana', [walletType]); if (isSolanaWallet) { const { wallets: solanaWallets, publicKey: connectedSolanaAddress, connected: solanaWalletConnected, wallet: solanaWallet, connect: solanaWalletConnect, select: solanaWalletSelect, signMessage: solanaSignMessage, disconnect: disconnectSolanaWallet, } = useWallet(); useEffect(() => { var _a; if (providerType === WalletProviderType.BACKPACK && window !== undefined) { const anyWindow = window; const anyprovider = (_a = anyWindow === null || anyWindow === void 0 ? void 0 : anyWindow.backpack) === null || _a === void 0 ? void 0 : _a.solana; setProvider(anyprovider); } }, [providerType]); const getWalletAddress = () => { var _a; if (providerType === WalletProviderType.BACKPACK && provider && provider.isConnected && !solanaWalletConnected) { return (_a = provider === null || provider === void 0 ? void 0 : provider.publicKey) === null || _a === void 0 ? void 0 : _a.toString(); } return connectedSolanaAddress; }; const getSolanaSignMessage = () => { var _a; if (providerType === WalletProviderType.BACKPACK && provider && provider.isConnected && !solanaWalletConnected) { return (_a = provider === null || provider === void 0 ? void 0 : provider.signMessage) === null || _a === void 0 ? void 0 : _a.bind(provider); } return solanaSignMessage; }; const solanaWalletData = useMemo(() => { return { solanaWallets, solanaWalletSelect, connectedSolanaAddress: getWalletAddress(), disconnectSolanaWallet, solanaSignMessage: getSolanaSignMessage(), solanaWalletConnected, solanaWallet, solanaWalletConnect, }; }, [ solanaWallets, solanaWalletSelect, solanaWalletConnected, disconnectSolanaWallet, getSolanaSignMessage, getWalletAddress, solanaWallet, solanaWalletConnect, ]); return solanaWalletData; } return { thirdWebWallet: undefined, connect: undefined, activeAccount: undefined, thirdWebDisconnect: undefined, connectedThirdWebWallet: undefined, thirdWebConnectedChain: undefined, connectionStatus: undefined, solanaWallets: undefined, solanaWalletConnect: undefined, connectedSolanaAddress: undefined, disconnectSolanaWallet: undefined, solanaSignMessage: undefined, solanaWalletConnected: undefined, solanaWallet: undefined, solanaWalletSelect: undefined, }; }; export { useSolanaWalletsMethod as default };