@dynamic-labs/ethereum 0.17.18 → 0.17.100-viem.2
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 +4 -5
- package/package.json +10 -8
- package/src/EthWalletConnector.cjs +185 -193
- package/src/EthWalletConnector.d.ts +272 -39
- package/src/EthWalletConnector.js +186 -194
- package/src/constants.d.ts +1 -1
- package/src/ethProviderHelper.cjs +202 -193
- package/src/ethProviderHelper.d.ts +33 -34
- package/src/ethProviderHelper.js +202 -193
- package/src/index.cjs +5 -5
- package/src/index.d.ts +7 -7
- package/src/index.js +5 -5
- package/src/injected/BloctoInjected.cjs +5 -5
- package/src/injected/BloctoInjected.d.ts +4 -4
- package/src/injected/BloctoInjected.js +5 -5
- package/src/injected/BraveEvm.cjs +5 -5
- package/src/injected/BraveEvm.d.ts +4 -4
- package/src/injected/BraveEvm.js +5 -5
- package/src/injected/Dawn.cjs +5 -5
- package/src/injected/Dawn.d.ts +4 -4
- package/src/injected/Dawn.js +5 -5
- package/src/injected/ExodusEvm.cjs +5 -5
- package/src/injected/ExodusEvm.d.ts +4 -4
- package/src/injected/ExodusEvm.js +5 -5
- package/src/injected/Frame.cjs +5 -5
- package/src/injected/Frame.d.ts +4 -4
- package/src/injected/Frame.js +5 -5
- package/src/injected/GameStop.cjs +5 -5
- package/src/injected/GameStop.d.ts +4 -4
- package/src/injected/GameStop.js +5 -5
- package/src/injected/InjectedWalletBase.cjs +70 -65
- package/src/injected/InjectedWalletBase.d.ts +24 -24
- package/src/injected/InjectedWalletBase.js +70 -65
- package/src/injected/MetaMask.cjs +6 -6
- package/src/injected/MetaMask.d.ts +5 -5
- package/src/injected/MetaMask.js +6 -6
- package/src/injected/Opera.cjs +5 -5
- package/src/injected/Opera.d.ts +4 -4
- package/src/injected/Opera.js +5 -5
- package/src/injected/PhantomEvm.cjs +27 -27
- package/src/injected/PhantomEvm.d.ts +5 -5
- package/src/injected/PhantomEvm.js +27 -27
- package/src/injected/Superb.cjs +5 -5
- package/src/injected/Superb.d.ts +4 -4
- package/src/injected/Superb.js +5 -5
- package/src/injected/Trust.cjs +6 -6
- package/src/injected/Trust.d.ts +5 -5
- package/src/injected/Trust.js +6 -6
- package/src/injected/UnknownInjectedWallet.cjs +5 -5
- package/src/injected/UnknownInjectedWallet.d.ts +4 -4
- package/src/injected/UnknownInjectedWallet.js +5 -5
- package/src/injected/Zerion.cjs +6 -6
- package/src/injected/Zerion.d.ts +5 -5
- package/src/injected/Zerion.js +6 -6
- package/src/injected/index.cjs +14 -14
- package/src/injected/index.d.ts +14 -14
- package/src/injected/index.js +14 -14
- package/src/polyfills.cjs +11 -11
- package/src/polyfills.d.ts +1 -1
- package/src/polyfills.js +11 -11
- package/src/types.d.ts +24 -22
- package/src/utils/findEvmNetwork.cjs +13 -13
- package/src/utils/findEvmNetwork.d.ts +6 -6
- package/src/utils/findEvmNetwork.js +13 -13
- package/src/utils/isString.d.ts +1 -1
- package/src/utils/isUnsupportedProviderError/index.d.ts +1 -1
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +6 -6
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -6
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +6 -6
- package/src/utils/last.d.ts +1 -1
- package/src/utils/parseIntSafe.cjs +13 -13
- package/src/utils/parseIntSafe.d.ts +1 -1
- package/src/utils/parseIntSafe.js +13 -13
- package/src/walletConnect/client/client.cjs +181 -177
- package/src/walletConnect/client/client.d.ts +17 -17
- package/src/walletConnect/client/client.js +181 -177
- package/src/walletConnect/client/index.d.ts +1 -1
- package/src/walletConnect/client/types.d.ts +4 -4
- package/src/walletConnect/fetchWalletConnectWallets.cjs +45 -45
- package/src/walletConnect/fetchWalletConnectWallets.d.ts +8 -8
- package/src/walletConnect/fetchWalletConnectWallets.js +45 -45
- package/src/walletConnect/index.d.ts +3 -3
- package/src/walletConnect/walletConnect.cjs +128 -126
- package/src/walletConnect/walletConnect.d.ts +35 -35
- package/src/walletConnect/walletConnect.js +128 -126
- package/src/walletConnect/walletConnectV2.cjs +370 -371
- package/src/walletConnect/walletConnectV2.d.ts +50 -50
- package/src/walletConnect/walletConnectV2.js +371 -372
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
|
|
2
|
-
### [0.17.
|
|
3
|
-
|
|
4
|
-
### [0.17.17](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.16...v0.17.17) (2023-06-29)
|
|
2
|
+
### [0.17.100-viem.2](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.100-viem.1...v0.17.100-viem.2) (2023-06-29)
|
|
5
3
|
|
|
6
4
|
|
|
7
5
|
### Bug Fixes
|
|
8
6
|
|
|
9
|
-
*
|
|
10
|
-
|
|
7
|
+
* wcv2 fixes ([#2530](https://github.com/dynamic-labs/DynamicAuth/issues/2530)) ([aafbbdc](https://github.com/dynamic-labs/DynamicAuth/commit/aafbbdcfc61c3cd8aa2be8d710344584116d4d10)), closes [#2523](https://github.com/dynamic-labs/DynamicAuth/issues/2523) [#2527](https://github.com/dynamic-labs/DynamicAuth/issues/2527)
|
|
8
|
+
|
|
9
|
+
### [0.17.100-viem.1](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.100-viem.0...v0.17.100-viem.1) (2023-06-28)
|
|
11
10
|
|
|
12
11
|
### [0.17.16](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.15...v0.17.16) (2023-06-28)
|
|
13
12
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/ethereum",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.100-viem.2",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -29,14 +29,16 @@
|
|
|
29
29
|
"@walletconnect/client": "1.8.0",
|
|
30
30
|
"@walletconnect/ethereum-provider": "1.8.0",
|
|
31
31
|
"@walletconnect/universal-provider": "2.8.3",
|
|
32
|
-
"ethers": "5.7.2",
|
|
33
32
|
"eventemitter3": "5.0.1",
|
|
34
33
|
"buffer": "6.0.3",
|
|
35
|
-
"@dynamic-labs/rpc-providers": "0.17.
|
|
36
|
-
"@dynamic-labs/types": "0.17.
|
|
37
|
-
"@dynamic-labs/utils": "0.17.
|
|
38
|
-
"@dynamic-labs/wallet-book": "0.17.
|
|
39
|
-
"@dynamic-labs/wallet-connector-core": "0.17.
|
|
34
|
+
"@dynamic-labs/rpc-providers": "0.17.100-viem.2",
|
|
35
|
+
"@dynamic-labs/types": "0.17.100-viem.2",
|
|
36
|
+
"@dynamic-labs/utils": "0.17.100-viem.2",
|
|
37
|
+
"@dynamic-labs/wallet-book": "0.17.100-viem.2",
|
|
38
|
+
"@dynamic-labs/wallet-connector-core": "0.17.100-viem.2",
|
|
39
|
+
"stream": "0.0.2"
|
|
40
40
|
},
|
|
41
|
-
"peerDependencies": {
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"viem": "^1.1.0"
|
|
43
|
+
}
|
|
42
44
|
}
|
|
@@ -3,204 +3,196 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _tslib = require('../_virtual/_tslib.cjs');
|
|
6
|
-
var
|
|
6
|
+
var viem = require('viem');
|
|
7
7
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
8
8
|
var utils = require('@dynamic-labs/utils');
|
|
9
9
|
var rpcProviders = require('@dynamic-labs/rpc-providers');
|
|
10
10
|
var findEvmNetwork = require('./utils/findEvmNetwork.cjs');
|
|
11
11
|
|
|
12
|
-
class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
13
|
-
getRpcProvider() {
|
|
14
|
-
var _a, _b, _c;
|
|
15
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
|
|
17
|
-
if (this.evmNetworks.length === 0) {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
const configurations = {
|
|
21
|
-
cosmos: [],
|
|
22
|
-
evm: this.evmNetworks,
|
|
23
|
-
solana: [],
|
|
24
|
-
starknet: undefined,
|
|
25
|
-
};
|
|
26
|
-
return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
constructor(props) {
|
|
30
|
-
var _a;
|
|
31
|
-
super(props);
|
|
32
|
-
this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
|
|
33
|
-
var _a;
|
|
34
|
-
[acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
|
|
35
|
-
? network.privateCustomerRpcUrls
|
|
36
|
-
: network.rpcUrls;
|
|
37
|
-
return acc;
|
|
38
|
-
}, {});
|
|
39
|
-
this.evmNetworks = utils.parseEvmNetworks(props.evmNetworks);
|
|
40
|
-
this.chainRpcProviders = props.chainRpcProviders;
|
|
41
|
-
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(rpcProviders.ProviderChain.EVM, (config) => {
|
|
42
|
-
const rpcProviders = {};
|
|
43
|
-
if (config === null || config === void 0 ? void 0 : config.evm) {
|
|
44
|
-
rpcProviders.evm = utils.parseEvmNetworks(config.evm).map((network) => {
|
|
45
|
-
var _a;
|
|
46
|
-
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
47
|
-
const provider =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
getNameService() {
|
|
71
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
const [[address],
|
|
73
|
-
this.getConnectedAccounts(),
|
|
74
|
-
this.getRpcProvider(),
|
|
75
|
-
]);
|
|
76
|
-
if (!address || !
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
try {
|
|
183
|
-
return yield provider.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
throw new utils.DynamicError("User rejected the wallet's request to add network");
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
throw error;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
}
|
|
12
|
+
class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
13
|
+
getRpcProvider() {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
|
|
17
|
+
if (this.evmNetworks.length === 0) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const configurations = {
|
|
21
|
+
cosmos: [],
|
|
22
|
+
evm: this.evmNetworks,
|
|
23
|
+
solana: [],
|
|
24
|
+
starknet: undefined,
|
|
25
|
+
};
|
|
26
|
+
return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
constructor(props) {
|
|
30
|
+
var _a;
|
|
31
|
+
super(props);
|
|
32
|
+
this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
|
|
33
|
+
var _a;
|
|
34
|
+
[acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
|
|
35
|
+
? network.privateCustomerRpcUrls
|
|
36
|
+
: network.rpcUrls;
|
|
37
|
+
return acc;
|
|
38
|
+
}, {});
|
|
39
|
+
this.evmNetworks = utils.parseEvmNetworks(props.evmNetworks);
|
|
40
|
+
this.chainRpcProviders = props.chainRpcProviders;
|
|
41
|
+
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(rpcProviders.ProviderChain.EVM, (config) => {
|
|
42
|
+
const rpcProviders = {};
|
|
43
|
+
if (config === null || config === void 0 ? void 0 : config.evm) {
|
|
44
|
+
rpcProviders.evm = utils.parseEvmNetworks(config.evm).map((network) => {
|
|
45
|
+
var _a;
|
|
46
|
+
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
47
|
+
const provider = viem.createPublicClient({
|
|
48
|
+
chain: utils.getOrMapViemChain(network),
|
|
49
|
+
transport: viem.http(rpcUrl),
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
chainId: network.chainId,
|
|
53
|
+
chainName: network.name,
|
|
54
|
+
provider,
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return rpcProviders.evm;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
getNetwork() {
|
|
62
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const provider = yield this.getWeb3Provider();
|
|
64
|
+
if (!this.supportsNetworkSwitching || !provider) {
|
|
65
|
+
return Promise.resolve(undefined);
|
|
66
|
+
}
|
|
67
|
+
return yield provider.getChainId();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
getNameService() {
|
|
71
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
const [[address], rpcProvider] = yield Promise.all([
|
|
73
|
+
this.getConnectedAccounts(),
|
|
74
|
+
this.getRpcProvider(),
|
|
75
|
+
]);
|
|
76
|
+
if (!address || !rpcProvider) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const ensName = yield rpcProvider.getEnsName({
|
|
80
|
+
address: address,
|
|
81
|
+
});
|
|
82
|
+
const ensAvatar = ensName
|
|
83
|
+
? yield rpcProvider.getEnsAvatar({
|
|
84
|
+
name: ensName,
|
|
85
|
+
})
|
|
86
|
+
: undefined;
|
|
87
|
+
const ensData = {
|
|
88
|
+
avatar: ensAvatar !== null && ensAvatar !== void 0 ? ensAvatar : undefined,
|
|
89
|
+
name: ensName !== null && ensName !== void 0 ? ensName : undefined,
|
|
90
|
+
};
|
|
91
|
+
return ensData;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
getSigner() {
|
|
95
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
return this.getWeb3Provider();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
getBalance() {
|
|
100
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
// This is equivalent to getSigner().getAddress() but does not crash
|
|
102
|
+
// if the signer is not available
|
|
103
|
+
const [address] = yield this.getConnectedAccounts();
|
|
104
|
+
if (!address)
|
|
105
|
+
return;
|
|
106
|
+
const client = yield this.getRpcProvider();
|
|
107
|
+
const result = yield (client === null || client === void 0 ? void 0 : client.getBalance({
|
|
108
|
+
address: address,
|
|
109
|
+
}));
|
|
110
|
+
if (!result && result !== BigInt(0))
|
|
111
|
+
return;
|
|
112
|
+
return viem.formatEther(result);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
supportsNetworkSwitching() {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
switchNetwork({ networkName, networkChainId, }) {
|
|
119
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
const network = findEvmNetwork.findEvmNetwork({
|
|
121
|
+
chainId: networkChainId,
|
|
122
|
+
name: networkName,
|
|
123
|
+
networks: this.evmNetworks,
|
|
124
|
+
});
|
|
125
|
+
if (!network) {
|
|
126
|
+
throw new utils.DynamicError(`Could not find network mapping for chain ${networkName ? networkName : networkChainId}`);
|
|
127
|
+
}
|
|
128
|
+
if (!this.supportsNetworkSwitching()) {
|
|
129
|
+
throw new utils.DynamicError('Network switching is not supported');
|
|
130
|
+
}
|
|
131
|
+
const provider = yield this.getWeb3Provider();
|
|
132
|
+
if (!provider) {
|
|
133
|
+
throw new utils.DynamicError('Provider not found');
|
|
134
|
+
}
|
|
135
|
+
return this.providerSwitchNetwork({ network, provider });
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
getConnectedAccounts() {
|
|
139
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
const provider = yield this.getWeb3Provider();
|
|
141
|
+
if (!provider)
|
|
142
|
+
return [];
|
|
143
|
+
return provider.getAddresses();
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
providerSwitchNetwork({ network, provider, }) {
|
|
147
|
+
var _a, _b, _c;
|
|
148
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
const { chainId } = network;
|
|
150
|
+
const currentNetworkId = yield this.getNetwork();
|
|
151
|
+
if (currentNetworkId && currentNetworkId === chainId) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
if (!this.supportsNetworkSwitching()) {
|
|
156
|
+
throw new utils.DynamicError('Network switching is not supported');
|
|
157
|
+
}
|
|
158
|
+
return yield provider.switchChain(utils.getOrMapViemChain(network));
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
|
|
162
|
+
(typeof error === 'string' && error.includes('rejected'))) {
|
|
163
|
+
throw new utils.DynamicError("User rejected the wallet's request to switch network");
|
|
164
|
+
}
|
|
165
|
+
else if (error.code === 4902 ||
|
|
166
|
+
error.message.includes('Unrecognized chain') ||
|
|
167
|
+
// https://github.com/MetaMask/metamask-mobile/issues/3312#issuecomment-1065923294
|
|
168
|
+
((_c = (_b = error === null || error === void 0 ? void 0 : error.data) === null || _b === void 0 ? void 0 : _b.orginalError) === null || _c === void 0 ? void 0 : _c.code) === 4902) {
|
|
169
|
+
// error code indicates the chain has not been added yet
|
|
170
|
+
// https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
|
|
171
|
+
return this.providerAddNetwork({ network, provider });
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
providerAddNetwork({ network, provider, }) {
|
|
180
|
+
var _a;
|
|
181
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
try {
|
|
183
|
+
return yield provider.addChain({ chain: utils.getOrMapViemChain(network) });
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
|
|
187
|
+
(typeof error === 'string' && error.includes('rejected'))) {
|
|
188
|
+
throw new utils.DynamicError("User rejected the wallet's request to add network");
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
204
196
|
}
|
|
205
197
|
|
|
206
198
|
exports.EthWalletConnector = EthWalletConnector;
|