@sky-mavis/tanto-widget
Version:
Tanto Widget
48 lines (44 loc) • 1.19 kB
JavaScript
;
var react = require('react');
var index$1 = require('../constants/index.cjs');
var index = require('../utils/index.cjs');
var useConnect = require('./useConnect.cjs');
function useWalletConnectUri({
connector,
onReceiveDisplayUri
}) {
const [uri, setUri] = react.useState(undefined);
const {
status,
connect,
error
} = useConnect.useConnect({
connector
});
const generateConnectUri = react.useCallback(() => {
if (!connector || !index.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]);
react.useEffect(() => {
const timer = setTimeout(generateConnectUri, index$1.DELAY_CONNECT);
return () => clearTimeout(timer);
}, [generateConnectUri]);
return {
uri,
status,
generateConnectUri,
error
};
}
exports.useWalletConnectUri = useWalletConnectUri;