@mojito-inc/connect-wallet
Version:
Connecting wallet via metamask, wallet connect, email
77 lines (74 loc) • 4.63 kB
JavaScript
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 };