UNPKG

@sky-mavis/tanto-widget

Version:
69 lines (65 loc) 1.8 kB
'use strict'; var react = require('react'); var wagmi = require('wagmi'); var useTantoConfig = require('../contexts/tanto/useTantoConfig.cjs'); var connect = require('../types/connect.cjs'); var userAgent = require('../utils/userAgent.cjs'); var walletDetection = require('../utils/walletDetection.cjs'); function useConnect({ connector, onSuccess, onError }) { const { setState } = wagmi.useConfig(); const { initialChainId, disableProfile, hideConnectSuccessPrompt } = useTantoConfig.useTantoConfig(); const { status: wagmiStatus, connect: wagmiConnect, error } = wagmi.useConnect({ mutation: { onSuccess, onError } }); const [status, setStatus] = react.useState(connect.ConnectState.CONNECTING); const connect$1 = react.useCallback(() => { if (!connector) return; if (disableProfile) setState(prev => ({ ...prev, current: null })); wagmiConnect({ connector, chainId: initialChainId }); }, [connector, disableProfile, wagmiConnect]); react.useEffect(() => { setStatus(prevStatus => { switch (wagmiStatus) { case 'idle': case 'pending': return walletDetection.isWCConnector(connector?.id) && userAgent.isMobile() ? connect.ConnectState.OPEN_MOBILE_WALLET : connect.ConnectState.CONNECTING; case 'success': return hideConnectSuccessPrompt ? prevStatus : connect.ConnectState.SUCCESS; case 'error': return connect.ConnectState.FAILED; default: return connect.ConnectState.CONNECTING; } }); }, [wagmiStatus, connector?.id, disableProfile, hideConnectSuccessPrompt]); return { status, connector, connect: connect$1, error }; } exports.useConnect = useConnect;