@ant-design/web3-wagmi 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/esm/interface.d.ts +3 -0
- package/dist/esm/utils.d.ts +3 -1
- package/dist/esm/utils.js +8 -1
- package/dist/esm/wagmi-provider/config-provider.d.ts +3 -2
- package/dist/esm/wagmi-provider/config-provider.js +41 -17
- package/dist/esm/wagmi-provider/index.d.ts +3 -2
- package/dist/esm/wagmi-provider/index.js +3 -1
- package/dist/esm/wallets/eip6963.d.ts +3 -0
- package/dist/esm/wallets/eip6963.js +68 -0
- package/dist/esm/wallets/okx-wallet.d.ts +1 -1
- package/dist/esm/wallets/token-pocket.d.ts +1 -1
- package/dist/esm/wallets/wallet-connect.d.ts +1 -1
- package/dist/lib/interface.d.ts +3 -0
- package/dist/lib/utils.d.ts +3 -1
- package/dist/lib/utils.js +10 -2
- package/dist/lib/wagmi-provider/config-provider.d.ts +3 -2
- package/dist/lib/wagmi-provider/config-provider.js +30 -9
- package/dist/lib/wagmi-provider/index.d.ts +3 -2
- package/dist/lib/wagmi-provider/index.js +2 -0
- package/dist/lib/wallets/eip6963.d.ts +3 -0
- package/dist/lib/wallets/eip6963.js +34 -0
- package/dist/lib/wallets/okx-wallet.d.ts +1 -1
- package/dist/lib/wallets/token-pocket.d.ts +1 -1
- package/dist/lib/wallets/wallet-connect.d.ts +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/esm/interface.d.ts
CHANGED
package/dist/esm/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
|
+
import type { Connector as WagmiConnector } from 'wagmi';
|
|
2
3
|
declare const createDebug: (namespace: string) => debug.Debugger;
|
|
3
|
-
|
|
4
|
+
declare const isEIP6963Connector: (connector: WagmiConnector) => boolean;
|
|
5
|
+
export { createDebug, isEIP6963Connector };
|
package/dist/esm/utils.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
|
+
import { injected } from 'wagmi/connectors';
|
|
2
3
|
var createDebug = function createDebug(namespace) {
|
|
3
4
|
return debug("antd-web3:wagmi:".concat(namespace));
|
|
4
5
|
};
|
|
5
|
-
|
|
6
|
+
var isEIP6963Connector = function isEIP6963Connector(connector) {
|
|
7
|
+
if (connector.type === injected.type && connector.icon && connector.id && connector.name) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
return false;
|
|
11
|
+
};
|
|
12
|
+
export { createDebug, isEIP6963Connector };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type Chain, type Locale } from '@ant-design/web3-common';
|
|
3
|
-
import { Chain as WagmiChain } from 'viem';
|
|
3
|
+
import type { Chain as WagmiChain } from 'viem';
|
|
4
4
|
import { type Connector as WagmiConnector } from 'wagmi';
|
|
5
|
-
import type { WalletFactory } from '../interface';
|
|
5
|
+
import type { EIP6963Config, WalletFactory } from '../interface';
|
|
6
6
|
export interface AntDesignWeb3ConfigProviderProps {
|
|
7
7
|
chainAssets: Chain[];
|
|
8
8
|
walletFactorys: WalletFactory[];
|
|
@@ -10,6 +10,7 @@ export interface AntDesignWeb3ConfigProviderProps {
|
|
|
10
10
|
children?: React.ReactNode;
|
|
11
11
|
ens?: boolean;
|
|
12
12
|
balance?: boolean;
|
|
13
|
+
eip6963?: EIP6963Config;
|
|
13
14
|
readonly availableChains: readonly WagmiChain[];
|
|
14
15
|
readonly availableConnectors: readonly WagmiConnector[];
|
|
15
16
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
4
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
1
5
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
6
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
7
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -11,6 +15,8 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
11
15
|
import React from 'react';
|
|
12
16
|
import { fillAddressWith0x, Web3ConfigProvider } from '@ant-design/web3-common';
|
|
13
17
|
import { useAccount, useBalance, useConfig, useConnect, useDisconnect, useSwitchChain } from 'wagmi';
|
|
18
|
+
import { isEIP6963Connector } from "../utils";
|
|
19
|
+
import { EIP6963Wallet } from "../wallets/eip6963";
|
|
14
20
|
import { addNameToAccount, getNFTMetadata } from "./methods";
|
|
15
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
22
|
export var AntDesignWeb3ConfigProvider = function AntDesignWeb3ConfigProvider(props) {
|
|
@@ -22,7 +28,8 @@ export var AntDesignWeb3ConfigProvider = function AntDesignWeb3ConfigProvider(pr
|
|
|
22
28
|
availableConnectors = props.availableConnectors,
|
|
23
29
|
ens = props.ens,
|
|
24
30
|
balance = props.balance,
|
|
25
|
-
locale = props.locale
|
|
31
|
+
locale = props.locale,
|
|
32
|
+
eip6963 = props.eip6963;
|
|
26
33
|
var _useAccount = useAccount(),
|
|
27
34
|
address = _useAccount.address,
|
|
28
35
|
isDisconnected = _useAccount.isDisconnected,
|
|
@@ -88,25 +95,44 @@ export var AntDesignWeb3ConfigProvider = function AntDesignWeb3ConfigProvider(pr
|
|
|
88
95
|
}();
|
|
89
96
|
updateAccounts();
|
|
90
97
|
}, [address, isDisconnected, chain, ens]);
|
|
98
|
+
var findConnectorByName = function findConnectorByName(name) {
|
|
99
|
+
var commonConnector = availableConnectors.find(function (item) {
|
|
100
|
+
return item.name === name && !isEIP6963Connector(item);
|
|
101
|
+
});
|
|
102
|
+
if (!eip6963) {
|
|
103
|
+
return commonConnector;
|
|
104
|
+
}
|
|
105
|
+
var eip6963Connector = availableConnectors.find(function (item) {
|
|
106
|
+
return item.name === name && isEIP6963Connector(item);
|
|
107
|
+
});
|
|
108
|
+
return eip6963Connector || commonConnector;
|
|
109
|
+
};
|
|
91
110
|
var wallets = React.useMemo(function () {
|
|
111
|
+
var autoAddEIP6963Wallets = [];
|
|
92
112
|
availableConnectors.forEach(function (connector) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
113
|
+
if (isEIP6963Connector(connector)) {
|
|
114
|
+
// check is need auto add eip6963 wallet
|
|
115
|
+
if (_typeof(eip6963) === 'object' && eip6963 !== null && eip6963 !== void 0 && eip6963.autoAddInjectedWallets && !walletFactorys.find(function (item) {
|
|
116
|
+
return item.connectors.includes(connector.name);
|
|
117
|
+
})) {
|
|
118
|
+
// not config wallet and find the wallet in connectors, auto add it
|
|
119
|
+
autoAddEIP6963Wallets.push(EIP6963Wallet().create([connector]));
|
|
120
|
+
}
|
|
121
|
+
// Do not need check eip6963 wallet
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
var walletFactory = walletFactorys.find(function (factory) {
|
|
125
|
+
return factory.connectors.includes(connector.name);
|
|
97
126
|
});
|
|
98
127
|
if (!(walletFactory !== null && walletFactory !== void 0 && walletFactory.create)) {
|
|
128
|
+
// check user wallets config and console.error for alert
|
|
99
129
|
console.error("Can not find wallet factory for ".concat(connector.name, ", you should config it in WagmiWeb3ConfigProvider 'wallets'."));
|
|
100
130
|
}
|
|
101
131
|
});
|
|
102
132
|
|
|
103
133
|
// Generate Wallet for @ant-design/web3
|
|
104
|
-
var
|
|
105
|
-
var connectors = factory.connectors.map(function (
|
|
106
|
-
return availableConnectors.find(function (item) {
|
|
107
|
-
return item.name === name;
|
|
108
|
-
});
|
|
109
|
-
}).filter(function (item) {
|
|
134
|
+
var supportWallets = walletFactorys.map(function (factory) {
|
|
135
|
+
var connectors = factory.connectors.map(findConnectorByName).filter(function (item) {
|
|
110
136
|
return !!item;
|
|
111
137
|
});
|
|
112
138
|
if (connectors.length === 0) {
|
|
@@ -117,8 +143,8 @@ export var AntDesignWeb3ConfigProvider = function AntDesignWeb3ConfigProvider(pr
|
|
|
117
143
|
}).filter(function (item) {
|
|
118
144
|
return item !== null;
|
|
119
145
|
});
|
|
120
|
-
return
|
|
121
|
-
}, [availableConnectors, walletFactorys]);
|
|
146
|
+
return [].concat(_toConsumableArray(supportWallets), autoAddEIP6963Wallets);
|
|
147
|
+
}, [availableConnectors, walletFactorys, eip6963]);
|
|
122
148
|
var chainList = React.useMemo(function () {
|
|
123
149
|
return availableChains.map(function (item) {
|
|
124
150
|
var c = chainAssets === null || chainAssets === void 0 ? void 0 : chainAssets.find(function (asset) {
|
|
@@ -183,10 +209,8 @@ export var AntDesignWeb3ConfigProvider = function AntDesignWeb3ConfigProvider(pr
|
|
|
183
209
|
return wallet === null || wallet === void 0 || (_getWagmiConnector = (_ref3 = wallet).getWagmiConnector) === null || _getWagmiConnector === void 0 ? void 0 : _getWagmiConnector.call(_ref3);
|
|
184
210
|
case 2:
|
|
185
211
|
connector = _context2.sent;
|
|
186
|
-
if (!connector) {
|
|
187
|
-
connector =
|
|
188
|
-
return item.name === (wallet === null || wallet === void 0 ? void 0 : wallet.name);
|
|
189
|
-
});
|
|
212
|
+
if (!connector && wallet) {
|
|
213
|
+
connector = findConnectorByName(wallet.name);
|
|
190
214
|
}
|
|
191
215
|
if (connector) {
|
|
192
216
|
_context2.next = 6;
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { Chain, Locale } from '@ant-design/web3-common';
|
|
3
3
|
import { QueryClient } from '@tanstack/react-query';
|
|
4
4
|
import type { Config } from 'wagmi';
|
|
5
|
-
import type { WalletFactory } from '../interface';
|
|
5
|
+
import type { EIP6963Config, WalletFactory } from '../interface';
|
|
6
6
|
export type WagmiWeb3ConfigProviderProps = {
|
|
7
7
|
config: Config;
|
|
8
8
|
locale?: Locale;
|
|
@@ -11,5 +11,6 @@ export type WagmiWeb3ConfigProviderProps = {
|
|
|
11
11
|
ens?: boolean;
|
|
12
12
|
queryClient?: QueryClient;
|
|
13
13
|
balance?: boolean;
|
|
14
|
+
eip6963?: EIP6963Config;
|
|
14
15
|
};
|
|
15
|
-
export declare function WagmiWeb3ConfigProvider({ children, wallets, chains, ens, locale, balance, config, queryClient, ...restProps }: React.PropsWithChildren<WagmiWeb3ConfigProviderProps>): React.ReactElement;
|
|
16
|
+
export declare function WagmiWeb3ConfigProvider({ children, wallets, chains, ens, locale, balance, config, queryClient, eip6963, ...restProps }: React.PropsWithChildren<WagmiWeb3ConfigProviderProps>): React.ReactElement;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
var _excluded = ["children", "wallets", "chains", "ens", "locale", "balance", "config", "queryClient"];
|
|
2
|
+
var _excluded = ["children", "wallets", "chains", "ens", "locale", "balance", "config", "queryClient", "eip6963"];
|
|
3
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -31,6 +31,7 @@ export function WagmiWeb3ConfigProvider(_ref) {
|
|
|
31
31
|
balance = _ref.balance,
|
|
32
32
|
config = _ref.config,
|
|
33
33
|
queryClient = _ref.queryClient,
|
|
34
|
+
eip6963 = _ref.eip6963,
|
|
34
35
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
35
36
|
var chainAssets = [].concat(_toConsumableArray(chains), [Mainnet]);
|
|
36
37
|
var mergedQueryClient = React.useMemo(function () {
|
|
@@ -49,6 +50,7 @@ export function WagmiWeb3ConfigProvider(_ref) {
|
|
|
49
50
|
availableConnectors: config.connectors,
|
|
50
51
|
ens: ens,
|
|
51
52
|
balance: balance,
|
|
53
|
+
eip6963: eip6963,
|
|
52
54
|
children: children
|
|
53
55
|
})
|
|
54
56
|
})
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
5
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
9
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
10
|
+
export var EIP6963_CONNECTOR = 'EIP6963';
|
|
11
|
+
|
|
12
|
+
// EIP6963Wallet not export from @ant-design/web3-wagmi, only used in internal
|
|
13
|
+
export var EIP6963Wallet = function EIP6963Wallet(metadata) {
|
|
14
|
+
return {
|
|
15
|
+
connectors: [EIP6963_CONNECTOR],
|
|
16
|
+
create: function create(connectors) {
|
|
17
|
+
var connector = connectors === null || connectors === void 0 ? void 0 : connectors[0];
|
|
18
|
+
var metadata_eip6963 = {
|
|
19
|
+
icon: connector === null || connector === void 0 ? void 0 : connector.icon,
|
|
20
|
+
name: connector.name,
|
|
21
|
+
remark: "Wallet ".concat(connector === null || connector === void 0 ? void 0 : connector.name, " detected"),
|
|
22
|
+
key: connector === null || connector === void 0 ? void 0 : connector.id
|
|
23
|
+
};
|
|
24
|
+
return _objectSpread(_objectSpread({}, metadata_eip6963), {}, {
|
|
25
|
+
hasWalletReady: function () {
|
|
26
|
+
var _hasWalletReady = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
27
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
28
|
+
while (1) switch (_context.prev = _context.next) {
|
|
29
|
+
case 0:
|
|
30
|
+
_context.next = 2;
|
|
31
|
+
return connector === null || connector === void 0 ? void 0 : connector.getProvider();
|
|
32
|
+
case 2:
|
|
33
|
+
return _context.abrupt("return", !!_context.sent);
|
|
34
|
+
case 3:
|
|
35
|
+
case "end":
|
|
36
|
+
return _context.stop();
|
|
37
|
+
}
|
|
38
|
+
}, _callee);
|
|
39
|
+
}));
|
|
40
|
+
function hasWalletReady() {
|
|
41
|
+
return _hasWalletReady.apply(this, arguments);
|
|
42
|
+
}
|
|
43
|
+
return hasWalletReady;
|
|
44
|
+
}(),
|
|
45
|
+
hasExtensionInstalled: function () {
|
|
46
|
+
var _hasExtensionInstalled = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
47
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
48
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
49
|
+
case 0:
|
|
50
|
+
_context2.next = 2;
|
|
51
|
+
return connector === null || connector === void 0 ? void 0 : connector.getProvider();
|
|
52
|
+
case 2:
|
|
53
|
+
return _context2.abrupt("return", !!_context2.sent);
|
|
54
|
+
case 3:
|
|
55
|
+
case "end":
|
|
56
|
+
return _context2.stop();
|
|
57
|
+
}
|
|
58
|
+
}, _callee2);
|
|
59
|
+
}));
|
|
60
|
+
function hasExtensionInstalled() {
|
|
61
|
+
return _hasExtensionInstalled.apply(this, arguments);
|
|
62
|
+
}
|
|
63
|
+
return hasExtensionInstalled;
|
|
64
|
+
}()
|
|
65
|
+
}, metadata);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { EthereumWallet } from '../interface';
|
|
1
|
+
import type { EthereumWallet } from '../interface';
|
|
2
2
|
export declare const OkxWallet: EthereumWallet;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { EthereumWallet } from '../interface';
|
|
1
|
+
import type { EthereumWallet } from '../interface';
|
|
2
2
|
export declare const TokenPocket: EthereumWallet;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WalletMetadata } from '@ant-design/web3-common';
|
|
1
|
+
import type { WalletMetadata } from '@ant-design/web3-common';
|
|
2
2
|
import type { WalletFactory } from '../interface';
|
|
3
3
|
type EthereumWalletConnect = (metadata?: Partial<WalletMetadata> & {
|
|
4
4
|
useWalletConnectOfficialModal?: boolean;
|
package/dist/lib/interface.d.ts
CHANGED
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
|
+
import type { Connector as WagmiConnector } from 'wagmi';
|
|
2
3
|
declare const createDebug: (namespace: string) => debug.Debugger;
|
|
3
|
-
|
|
4
|
+
declare const isEIP6963Connector: (connector: WagmiConnector) => boolean;
|
|
5
|
+
export { createDebug, isEIP6963Connector };
|
package/dist/lib/utils.js
CHANGED
|
@@ -3,10 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.createDebug = void 0;
|
|
6
|
+
exports.isEIP6963Connector = exports.createDebug = void 0;
|
|
7
7
|
var _debug = _interopRequireDefault(require("debug"));
|
|
8
|
+
var _connectors = require("wagmi/connectors");
|
|
8
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
10
|
const createDebug = namespace => {
|
|
10
11
|
return (0, _debug.default)(`antd-web3:wagmi:${namespace}`);
|
|
11
12
|
};
|
|
12
|
-
exports.createDebug = createDebug;
|
|
13
|
+
exports.createDebug = createDebug;
|
|
14
|
+
const isEIP6963Connector = connector => {
|
|
15
|
+
if (connector.type === _connectors.injected.type && connector.icon && connector.id && connector.name) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
20
|
+
exports.isEIP6963Connector = isEIP6963Connector;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type Chain, type Locale } from '@ant-design/web3-common';
|
|
3
|
-
import { Chain as WagmiChain } from 'viem';
|
|
3
|
+
import type { Chain as WagmiChain } from 'viem';
|
|
4
4
|
import { type Connector as WagmiConnector } from 'wagmi';
|
|
5
|
-
import type { WalletFactory } from '../interface';
|
|
5
|
+
import type { EIP6963Config, WalletFactory } from '../interface';
|
|
6
6
|
export interface AntDesignWeb3ConfigProviderProps {
|
|
7
7
|
chainAssets: Chain[];
|
|
8
8
|
walletFactorys: WalletFactory[];
|
|
@@ -10,6 +10,7 @@ export interface AntDesignWeb3ConfigProviderProps {
|
|
|
10
10
|
children?: React.ReactNode;
|
|
11
11
|
ens?: boolean;
|
|
12
12
|
balance?: boolean;
|
|
13
|
+
eip6963?: EIP6963Config;
|
|
13
14
|
readonly availableChains: readonly WagmiChain[];
|
|
14
15
|
readonly availableConnectors: readonly WagmiConnector[];
|
|
15
16
|
}
|
|
@@ -7,6 +7,8 @@ exports.AntDesignWeb3ConfigProvider = void 0;
|
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _web3Common = require("@ant-design/web3-common");
|
|
9
9
|
var _wagmi = require("wagmi");
|
|
10
|
+
var _utils = require("../utils");
|
|
11
|
+
var _eip = require("../wallets/eip6963");
|
|
10
12
|
var _methods = require("./methods");
|
|
11
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -19,7 +21,8 @@ const AntDesignWeb3ConfigProvider = props => {
|
|
|
19
21
|
availableConnectors,
|
|
20
22
|
ens,
|
|
21
23
|
balance,
|
|
22
|
-
locale
|
|
24
|
+
locale,
|
|
25
|
+
eip6963
|
|
23
26
|
} = props;
|
|
24
27
|
const {
|
|
25
28
|
address,
|
|
@@ -56,26 +59,44 @@ const AntDesignWeb3ConfigProvider = props => {
|
|
|
56
59
|
};
|
|
57
60
|
updateAccounts();
|
|
58
61
|
}, [address, isDisconnected, chain, ens]);
|
|
62
|
+
const findConnectorByName = name => {
|
|
63
|
+
const commonConnector = availableConnectors.find(item => item.name === name && !(0, _utils.isEIP6963Connector)(item));
|
|
64
|
+
if (!eip6963) {
|
|
65
|
+
return commonConnector;
|
|
66
|
+
}
|
|
67
|
+
const eip6963Connector = availableConnectors.find(item => item.name === name && (0, _utils.isEIP6963Connector)(item));
|
|
68
|
+
return eip6963Connector || commonConnector;
|
|
69
|
+
};
|
|
59
70
|
const wallets = _react.default.useMemo(() => {
|
|
71
|
+
const autoAddEIP6963Wallets = [];
|
|
60
72
|
availableConnectors.forEach(connector => {
|
|
61
|
-
|
|
62
|
-
|
|
73
|
+
if ((0, _utils.isEIP6963Connector)(connector)) {
|
|
74
|
+
// check is need auto add eip6963 wallet
|
|
75
|
+
if (typeof eip6963 === 'object' && eip6963?.autoAddInjectedWallets && !walletFactorys.find(item => item.connectors.includes(connector.name))) {
|
|
76
|
+
// not config wallet and find the wallet in connectors, auto add it
|
|
77
|
+
autoAddEIP6963Wallets.push((0, _eip.EIP6963Wallet)().create([connector]));
|
|
78
|
+
}
|
|
79
|
+
// Do not need check eip6963 wallet
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const walletFactory = walletFactorys.find(factory => factory.connectors.includes(connector.name));
|
|
63
83
|
if (!walletFactory?.create) {
|
|
84
|
+
// check user wallets config and console.error for alert
|
|
64
85
|
console.error(`Can not find wallet factory for ${connector.name}, you should config it in WagmiWeb3ConfigProvider 'wallets'.`);
|
|
65
86
|
}
|
|
66
87
|
});
|
|
67
88
|
|
|
68
89
|
// Generate Wallet for @ant-design/web3
|
|
69
|
-
const
|
|
70
|
-
const connectors = factory.connectors.map(
|
|
90
|
+
const supportWallets = walletFactorys.map(factory => {
|
|
91
|
+
const connectors = factory.connectors.map(findConnectorByName).filter(item => !!item);
|
|
71
92
|
if (connectors.length === 0) {
|
|
72
93
|
// Not config connector for this wallet factory, ignore it.
|
|
73
94
|
return null;
|
|
74
95
|
}
|
|
75
96
|
return factory.create(connectors);
|
|
76
97
|
}).filter(item => item !== null);
|
|
77
|
-
return
|
|
78
|
-
}, [availableConnectors, walletFactorys]);
|
|
98
|
+
return [...supportWallets, ...autoAddEIP6963Wallets];
|
|
99
|
+
}, [availableConnectors, walletFactorys, eip6963]);
|
|
79
100
|
const chainList = _react.default.useMemo(() => {
|
|
80
101
|
return availableChains.map(item => {
|
|
81
102
|
const c = chainAssets?.find(asset => {
|
|
@@ -126,8 +147,8 @@ const AntDesignWeb3ConfigProvider = props => {
|
|
|
126
147
|
availableWallets: wallets,
|
|
127
148
|
connect: async wallet => {
|
|
128
149
|
let connector = await wallet?.getWagmiConnector?.();
|
|
129
|
-
if (!connector) {
|
|
130
|
-
connector =
|
|
150
|
+
if (!connector && wallet) {
|
|
151
|
+
connector = findConnectorByName(wallet.name);
|
|
131
152
|
}
|
|
132
153
|
if (!connector) {
|
|
133
154
|
throw new Error(`Can not find connector for ${wallet?.name}`);
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { Chain, Locale } from '@ant-design/web3-common';
|
|
3
3
|
import { QueryClient } from '@tanstack/react-query';
|
|
4
4
|
import type { Config } from 'wagmi';
|
|
5
|
-
import type { WalletFactory } from '../interface';
|
|
5
|
+
import type { EIP6963Config, WalletFactory } from '../interface';
|
|
6
6
|
export type WagmiWeb3ConfigProviderProps = {
|
|
7
7
|
config: Config;
|
|
8
8
|
locale?: Locale;
|
|
@@ -11,5 +11,6 @@ export type WagmiWeb3ConfigProviderProps = {
|
|
|
11
11
|
ens?: boolean;
|
|
12
12
|
queryClient?: QueryClient;
|
|
13
13
|
balance?: boolean;
|
|
14
|
+
eip6963?: EIP6963Config;
|
|
14
15
|
};
|
|
15
|
-
export declare function WagmiWeb3ConfigProvider({ children, wallets, chains, ens, locale, balance, config, queryClient, ...restProps }: React.PropsWithChildren<WagmiWeb3ConfigProviderProps>): React.ReactElement;
|
|
16
|
+
export declare function WagmiWeb3ConfigProvider({ children, wallets, chains, ens, locale, balance, config, queryClient, eip6963, ...restProps }: React.PropsWithChildren<WagmiWeb3ConfigProviderProps>): React.ReactElement;
|
|
@@ -22,6 +22,7 @@ function WagmiWeb3ConfigProvider({
|
|
|
22
22
|
balance,
|
|
23
23
|
config,
|
|
24
24
|
queryClient,
|
|
25
|
+
eip6963,
|
|
25
26
|
...restProps
|
|
26
27
|
}) {
|
|
27
28
|
const chainAssets = [...chains, _web3Assets.Mainnet];
|
|
@@ -41,6 +42,7 @@ function WagmiWeb3ConfigProvider({
|
|
|
41
42
|
availableConnectors: config.connectors,
|
|
42
43
|
ens: ens,
|
|
43
44
|
balance: balance,
|
|
45
|
+
eip6963: eip6963,
|
|
44
46
|
children: children
|
|
45
47
|
})
|
|
46
48
|
})
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EIP6963_CONNECTOR = exports.EIP6963Wallet = void 0;
|
|
7
|
+
const EIP6963_CONNECTOR = exports.EIP6963_CONNECTOR = 'EIP6963';
|
|
8
|
+
|
|
9
|
+
// EIP6963Wallet not export from @ant-design/web3-wagmi, only used in internal
|
|
10
|
+
const EIP6963Wallet = metadata => {
|
|
11
|
+
return {
|
|
12
|
+
connectors: [EIP6963_CONNECTOR],
|
|
13
|
+
create: connectors => {
|
|
14
|
+
const connector = connectors?.[0];
|
|
15
|
+
const metadata_eip6963 = {
|
|
16
|
+
icon: connector?.icon,
|
|
17
|
+
name: connector.name,
|
|
18
|
+
remark: `Wallet ${connector?.name} detected`,
|
|
19
|
+
key: connector?.id
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
...metadata_eip6963,
|
|
23
|
+
hasWalletReady: async () => {
|
|
24
|
+
return !!(await connector?.getProvider());
|
|
25
|
+
},
|
|
26
|
+
hasExtensionInstalled: async () => {
|
|
27
|
+
return !!(await connector?.getProvider());
|
|
28
|
+
},
|
|
29
|
+
...metadata
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exports.EIP6963Wallet = EIP6963Wallet;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { EthereumWallet } from '../interface';
|
|
1
|
+
import type { EthereumWallet } from '../interface';
|
|
2
2
|
export declare const OkxWallet: EthereumWallet;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { EthereumWallet } from '../interface';
|
|
1
|
+
import type { EthereumWallet } from '../interface';
|
|
2
2
|
export declare const TokenPocket: EthereumWallet;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WalletMetadata } from '@ant-design/web3-common';
|
|
1
|
+
import type { WalletMetadata } from '@ant-design/web3-common';
|
|
2
2
|
import type { WalletFactory } from '../interface';
|
|
3
3
|
type EthereumWalletConnect = (metadata?: Partial<WalletMetadata> & {
|
|
4
4
|
useWalletConnectOfficialModal?: boolean;
|