UNPKG

@hashlike-official/extend-web3-react-wrapper

Version:

web3-react wrapper - it offers a common interface for different wallet providers

80 lines (79 loc) 3.35 kB
"use strict"; /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useWeb3Store = void 0; const zustand_1 = __importDefault(require("zustand")); const chains_1 = require("./chains"); const connector_1 = require("./connector"); exports.useWeb3Store = (0, zustand_1.default)((set, get) => ({ connector: connector_1.metamaskConnector, hooks: connector_1.metamaskHooks, store: connector_1.metamaskStore, currentType: undefined, pending: 0, balance: 0, account: '', error: undefined, fetchBalance: (provider) => __awaiter(void 0, void 0, void 0, function* () { const balance = yield provider.getBalanceOf(get().account); set({ balance: Number(balance) }); }), connect: (type, chainId) => __awaiter(void 0, void 0, void 0, function* () { var _a; window.localStorage.removeItem('walletType'); const connector = get().connector; yield ((_a = connector.deactivate) === null || _a === void 0 ? void 0 : _a.call(connector)); yield connector.resetState(); set({ currentType: type }); window.localStorage.setItem('walletType', type); switch (type) { case 'MetaMask': try { yield connector_1.metamaskConnector.activate(chainId ? (0, chains_1.getAddChainParameters)(chainId) : undefined); set({ connector: connector_1.metamaskConnector, hooks: connector_1.metamaskHooks, store: connector_1.metamaskStore, }); } catch (err) { if (err instanceof Error) get().setError(err); } break; case 'Kaikas': try { yield connector_1.kaikasConnector.activate(chainId); set({ connector: connector_1.kaikasConnector, hooks: connector_1.kaikasHooks, store: connector_1.kaikasStore, }); } catch (err) { if (err instanceof Error) get().setError(err); } break; } }), setError(error) { set(() => ({ error })); }, }));