@sky-mavis/tanto-widget
Version:
Tanto Widget
38 lines • 1.13 kB
JavaScript
import {useState,useCallback,useEffect}from'react';import {DELAY_CONNECT}from'../constants/index.mjs';import {isWCConnector}from'../utils/index.mjs';import {useConnect}from'./useConnect.mjs';function useWalletConnectUri({
connector,
onReceiveDisplayUri
}) {
const [uri, setUri] = useState(undefined);
const {
status,
connect,
error
} = useConnect({
connector
});
const generateConnectUri = useCallback(() => {
if (!connector || !isWCConnector(connector.id)) return;
setUri(undefined);
const handleDisplayUri = ({
type,
data
}) => {
if (type !== 'display_uri' || typeof data !== 'string') return;
setUri(data);
onReceiveDisplayUri?.(data);
connector.emitter.off('message', handleDisplayUri);
};
connector.emitter.on('message', handleDisplayUri);
connect();
}, [connector, connect]);
useEffect(() => {
const timer = setTimeout(generateConnectUri, DELAY_CONNECT);
return () => clearTimeout(timer);
}, [generateConnectUri]);
return {
uri,
status,
generateConnectUri,
error
};
}export{useWalletConnectUri};