@sky-mavis/tanto-widget
Version:
Tanto Widget
46 lines (42 loc) • 1.42 kB
JavaScript
;
var react = require('react');
var wagmi = require('wagmi');
var constants = require('../../constants.cjs');
var useAuthEffect = require('../../hooks/useAuthEffect.cjs');
var walletDetection = require('../../utils/walletDetection.cjs');
function useWaypointMessageHandler(enableAuth) {
const {
connectors
} = wagmi.useConfig();
const waypointConnector = connectors.find(connector => walletDetection.isWaypointConnector(connector.id));
react.useEffect(() => {
if (!enableAuth) return;
const handleMessage = async ({
data,
origin
}) => {
if (!constants.WAYPOINT_ORIGINS.includes(origin)) return;
if (data.method !== 'auth') return;
const chainId = (await waypointConnector?.getChainId()) ?? 2020;
if (data.type === 'success' && data.data) {
const {
address,
id_token
} = data.data;
useAuthEffect.authEventEmitter.emit('success', {
address,
chainId,
token: id_token
});
}
if (data.type === 'fail' && data.error) {
useAuthEffect.authEventEmitter.emit('failed', {
error: data.error
});
}
};
window.addEventListener('message', handleMessage);
return () => window.removeEventListener('message', handleMessage);
}, [enableAuth, waypointConnector]);
}
exports.useWaypointMessageHandler = useWaypointMessageHandler;