UNPKG

@mojito-inc/connect-wallet

Version:

Connecting wallet via metamask, wallet connect, email

77 lines (74 loc) 4.63 kB
import { __awaiter } from '../_virtual/_tslib.js'; import { useSignature, useConnectWallet } from '@mojito-inc/core-service'; import { useCallback, useEffect, useMemo } from 'react'; import { useAuthentication } from '../provider/AuthenticationProvider.js'; import { StorageService } from '../utils/storageService.utils.js'; const useWalletConnect = ({ orgId, isTokenGating = false, setSupportedNetworksData, }) => { const { getSignatureMessage, loginWithSignature } = useSignature(); const { getSupportedNetworks } = useConnectWallet(); const { onAuthenticated } = useAuthentication(); const getSignature = useCallback((walletAddress, networkId) => __awaiter(void 0, void 0, void 0, function* () { var _a; try { const signature = yield getSignatureMessage({ orgId: orgId !== null && orgId !== void 0 ? orgId : '', networkID: networkId, walletAddress, }, { fetchPolicy: 'no-cache' }); return { status: true, message: (_a = signature === null || signature === void 0 ? void 0 : signature.data) === null || _a === void 0 ? void 0 : _a.getSignatureMessage }; } catch (error) { return { status: false, message: error === null || error === void 0 ? void 0 : error.message }; } }), [getSignatureMessage, orgId]); const loginWithWallet = useCallback((signatureMessage, signer, signature, chainId) => __awaiter(void 0, void 0, void 0, function* () { var _b, _c, _d, _e, _f, _g, _h; try { const response = yield loginWithSignature({ orgId, signer, challenge: signatureMessage, signature, chainId, }); onAuthenticated((_d = (_c = (_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.loginWithSignature) === null || _c === void 0 ? void 0 : _c.token) !== null && _d !== void 0 ? _d : ''); StorageService.authTokenType.setValue((_f = (_e = response === null || response === void 0 ? void 0 : response.data) === null || _e === void 0 ? void 0 : _e.loginWithSignature) === null || _f === void 0 ? void 0 : _f.tokenType); return { status: true, message: (_h = (_g = response === null || response === void 0 ? void 0 : response.data) === null || _g === void 0 ? void 0 : _g.loginWithSignature) === null || _h === void 0 ? void 0 : _h.token }; } catch (error) { return { status: false, message: error === null || error === void 0 ? void 0 : error.message }; } }), [loginWithSignature, onAuthenticated, orgId]); const getNetworks = useCallback(() => __awaiter(void 0, void 0, void 0, function* () { var _j, _k, _l, _m, _o, _p; try { const response = yield getSupportedNetworks({ includeTestnets: true, orgId, }); StorageService.networkDetails.setValue((_j = response.data) === null || _j === void 0 ? void 0 : _j.getSupportedNetworks); setSupportedNetworksData === null || setSupportedNetworksData === void 0 ? void 0 : setSupportedNetworksData((_l = (_k = response.data) === null || _k === void 0 ? void 0 : _k.getSupportedNetworks) !== null && _l !== void 0 ? _l : []); return (_m = response.data) === null || _m === void 0 ? void 0 : _m.getSupportedNetworks; } catch (error) { if ((_p = (_o = error === null || error === void 0 ? void 0 : error.message) === null || _o === void 0 ? void 0 : _o.toLocaleLowerCase()) === null || _p === void 0 ? void 0 : _p.includes('jwt token invalid')) { StorageService.authToken.clear(); StorageService.authTokenType.clear(); StorageService.walletDetails.clear(); StorageService.networkDetails.clear(); setSupportedNetworksData === null || setSupportedNetworksData === void 0 ? void 0 : setSupportedNetworksData([]); if (typeof window !== 'undefined') { window.location.reload(); } } return []; } }), [orgId, getSupportedNetworks, setSupportedNetworksData]); useEffect(() => { getNetworks(); }, [getNetworks]); return useMemo(() => { return { loginWithWallet, getSignature, isTokenGating }; }, [loginWithWallet, getSignature, isTokenGating]); }; export { useWalletConnect as default };