@sky-mavis/tanto-widget
Version:
Tanto Widget
56 lines • 1.6 kB
JavaScript
import {useState,useCallback,useEffect}from'react';import {useConfig,useConnect as useConnect$1}from'wagmi';import {ConnectState}from'../types/connect.mjs';import {isWCConnector,isMobile}from'../utils/index.mjs';import {useTantoConfig}from'./useTantoConfig.mjs';function useConnect({
connector
}) {
const {
setState
} = useConfig();
const {
initialChainId,
disableProfile,
hideConnectSuccessPrompt
} = useTantoConfig();
const {
status: wagmiStatus,
connect: wagmiConnect,
error
} = useConnect$1({
mutation: {
onError(error) {
console.debug(error);
}
}
});
const [status, setStatus] = useState(ConnectState.PENDING);
const connect = useCallback(() => {
if (!connector) return;
if (disableProfile) setState(prev => ({
...prev,
current: null
}));
wagmiConnect({
connector,
chainId: initialChainId
});
}, [connector, disableProfile, wagmiConnect]);
useEffect(() => {
setStatus(prevStatus => {
switch (wagmiStatus) {
case 'idle':
case 'pending':
return isWCConnector(connector?.id) && isMobile() ? ConnectState.OPENING_WALLET : ConnectState.PENDING;
case 'success':
return hideConnectSuccessPrompt ? prevStatus : ConnectState.SUCCESS;
case 'error':
return ConnectState.ERROR;
default:
return ConnectState.PENDING;
}
});
}, [wagmiStatus, connector?.id, disableProfile, hideConnectSuccessPrompt]);
return {
status,
connector,
connect,
error
};
}export{useConnect};