@wagmi/connectors 7.1.7 → 7.2.1
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/dist/esm/exports/index.js +0 -1
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/exports/index.d.ts +0 -1
- package/dist/types/exports/index.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -6
- package/src/exports/index.ts +0 -1
- package/src/version.ts +1 -1
- package/dist/esm/gemini.js +0 -161
- package/dist/esm/gemini.js.map +0 -1
- package/dist/types/gemini.d.ts +0 -9
- package/dist/types/gemini.d.ts.map +0 -1
- package/src/gemini.ts +0 -183
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '7.1
|
|
1
|
+
export const version = '7.2.1';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { type InjectedParameters, injected, type MockParameters, mock, } from '@wagmi/core';
|
|
2
2
|
export { type BaseAccountParameters, baseAccount } from '../baseAccount.js';
|
|
3
3
|
export { type CoinbaseWalletParameters, coinbaseWallet, } from '../coinbaseWallet.js';
|
|
4
|
-
export { type GeminiParameters, gemini } from '../gemini.js';
|
|
5
4
|
export { type MetaMaskParameters, metaMask } from '../metaMask.js';
|
|
6
5
|
export { type PortoParameters, porto } from '../porto.js';
|
|
7
6
|
export { type SafeParameters, safe } from '../safe.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EACvB,QAAQ,EACR,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,qBAAqB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EACL,KAAK,wBAAwB,EAC7B,cAAc,GACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EACvB,QAAQ,EACR,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,qBAAqB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EACL,KAAK,wBAAwB,EAC7B,cAAc,GACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,KAAK,uBAAuB,EAC5B,aAAa,GACd,MAAM,qBAAqB,CAAA"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "7.1
|
|
1
|
+
export declare const version = "7.2.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wagmi/connectors",
|
|
3
3
|
"description": "Collection of connectors for Wagmi",
|
|
4
|
-
"version": "7.1
|
|
4
|
+
"version": "7.2.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@base-org/account": "^2.5.1",
|
|
32
32
|
"@coinbase/wallet-sdk": "^4.3.6",
|
|
33
|
-
"@gemini-wallet/core": "~0.3.1",
|
|
34
33
|
"@metamask/sdk": "~0.33.1",
|
|
35
34
|
"@safe-global/safe-apps-provider": "~0.18.6",
|
|
36
35
|
"@safe-global/safe-apps-sdk": "^9.1.0",
|
|
@@ -38,7 +37,7 @@
|
|
|
38
37
|
"porto": "~0.2.35",
|
|
39
38
|
"typescript": ">=5.7.3",
|
|
40
39
|
"viem": "2.x",
|
|
41
|
-
"@wagmi/core": "3.
|
|
40
|
+
"@wagmi/core": "3.4.0"
|
|
42
41
|
},
|
|
43
42
|
"peerDependenciesMeta": {
|
|
44
43
|
"@base-org/account": {
|
|
@@ -47,9 +46,6 @@
|
|
|
47
46
|
"@coinbase/wallet-sdk": {
|
|
48
47
|
"optional": true
|
|
49
48
|
},
|
|
50
|
-
"@gemini-wallet/core": {
|
|
51
|
-
"optional": true
|
|
52
|
-
},
|
|
53
49
|
"@metamask/sdk": {
|
|
54
50
|
"optional": true
|
|
55
51
|
},
|
package/src/exports/index.ts
CHANGED
|
@@ -10,7 +10,6 @@ export {
|
|
|
10
10
|
type CoinbaseWalletParameters,
|
|
11
11
|
coinbaseWallet,
|
|
12
12
|
} from '../coinbaseWallet.js'
|
|
13
|
-
export { type GeminiParameters, gemini } from '../gemini.js'
|
|
14
13
|
export { type MetaMaskParameters, metaMask } from '../metaMask.js'
|
|
15
14
|
export { type PortoParameters, porto } from '../porto.js'
|
|
16
15
|
export { type SafeParameters, safe } from '../safe.js'
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '7.1
|
|
1
|
+
export const version = '7.2.1'
|
package/dist/esm/gemini.js
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import { ChainNotConfiguredError, createConnector, } from '@wagmi/core';
|
|
2
|
-
import { getAddress, numberToHex, SwitchChainError, UserRejectedRequestError, } from 'viem';
|
|
3
|
-
gemini.type = 'gemini';
|
|
4
|
-
export function gemini(parameters = {}) {
|
|
5
|
-
let walletProvider;
|
|
6
|
-
let onAccountsChanged;
|
|
7
|
-
let onChainChanged;
|
|
8
|
-
let onDisconnect;
|
|
9
|
-
return createConnector((config) => ({
|
|
10
|
-
id: 'gemini',
|
|
11
|
-
name: 'Gemini Wallet',
|
|
12
|
-
type: gemini.type,
|
|
13
|
-
icon: 'https://keys.gemini.com/images/gemini-wallet-logo.svg',
|
|
14
|
-
async connect({ chainId, withCapabilities } = {}) {
|
|
15
|
-
try {
|
|
16
|
-
const provider = await this.getProvider();
|
|
17
|
-
const accounts = (await provider.request({
|
|
18
|
-
method: 'eth_requestAccounts',
|
|
19
|
-
}));
|
|
20
|
-
if (!onAccountsChanged) {
|
|
21
|
-
onAccountsChanged = this.onAccountsChanged.bind(this);
|
|
22
|
-
provider.on('accountsChanged', onAccountsChanged);
|
|
23
|
-
}
|
|
24
|
-
if (!onChainChanged) {
|
|
25
|
-
onChainChanged = this.onChainChanged.bind(this);
|
|
26
|
-
provider.on('chainChanged', onChainChanged);
|
|
27
|
-
}
|
|
28
|
-
if (!onDisconnect) {
|
|
29
|
-
onDisconnect = this.onDisconnect.bind(this);
|
|
30
|
-
provider.on('disconnect', onDisconnect);
|
|
31
|
-
}
|
|
32
|
-
let currentChainId = await this.getChainId();
|
|
33
|
-
if (chainId && currentChainId !== chainId) {
|
|
34
|
-
const chain = await this.switchChain({ chainId }).catch((error) => {
|
|
35
|
-
if (error.code === UserRejectedRequestError.code)
|
|
36
|
-
throw error;
|
|
37
|
-
return { id: currentChainId };
|
|
38
|
-
});
|
|
39
|
-
currentChainId = chain?.id ?? currentChainId;
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
// TODO(v3): Make `withCapabilities: true` default behavior
|
|
43
|
-
accounts: (withCapabilities
|
|
44
|
-
? accounts.map((address) => ({ address, capabilities: {} }))
|
|
45
|
-
: accounts),
|
|
46
|
-
chainId: currentChainId,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
if (/(user closed modal|accounts received is empty|user denied account|request rejected)/i.test(error.message))
|
|
51
|
-
throw new UserRejectedRequestError(error);
|
|
52
|
-
throw error;
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
async disconnect() {
|
|
56
|
-
const provider = await this.getProvider();
|
|
57
|
-
if (onAccountsChanged) {
|
|
58
|
-
provider.removeListener('accountsChanged', onAccountsChanged);
|
|
59
|
-
onAccountsChanged = undefined;
|
|
60
|
-
}
|
|
61
|
-
if (onChainChanged) {
|
|
62
|
-
provider.removeListener('chainChanged', onChainChanged);
|
|
63
|
-
onChainChanged = undefined;
|
|
64
|
-
}
|
|
65
|
-
if (onDisconnect) {
|
|
66
|
-
provider.removeListener('disconnect', onDisconnect);
|
|
67
|
-
onDisconnect = undefined;
|
|
68
|
-
}
|
|
69
|
-
await provider.disconnect();
|
|
70
|
-
},
|
|
71
|
-
async getAccounts() {
|
|
72
|
-
const provider = await this.getProvider();
|
|
73
|
-
const accounts = (await provider.request({
|
|
74
|
-
method: 'eth_accounts',
|
|
75
|
-
}));
|
|
76
|
-
return accounts.map((x) => getAddress(x));
|
|
77
|
-
},
|
|
78
|
-
async getChainId() {
|
|
79
|
-
const provider = await this.getProvider();
|
|
80
|
-
const chainId = (await provider.request({
|
|
81
|
-
method: 'eth_chainId',
|
|
82
|
-
}));
|
|
83
|
-
return Number(chainId);
|
|
84
|
-
},
|
|
85
|
-
async getProvider() {
|
|
86
|
-
if (!walletProvider) {
|
|
87
|
-
const { GeminiWalletProvider } = await (() => {
|
|
88
|
-
// safe webpack optional peer dependency dynamic import
|
|
89
|
-
try {
|
|
90
|
-
return import('@gemini-wallet/core');
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
throw new Error('dependency "@gemini-wallet/core" not found');
|
|
94
|
-
}
|
|
95
|
-
})();
|
|
96
|
-
walletProvider = new GeminiWalletProvider({
|
|
97
|
-
appMetadata: parameters.appMetadata ?? {},
|
|
98
|
-
chain: {
|
|
99
|
-
id: config.chains[0]?.id ?? 1,
|
|
100
|
-
rpcUrl: config.chains[0]?.rpcUrls?.default?.http[0],
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
return walletProvider;
|
|
105
|
-
},
|
|
106
|
-
async isAuthorized() {
|
|
107
|
-
try {
|
|
108
|
-
const accounts = await this.getAccounts();
|
|
109
|
-
return Boolean(accounts.length);
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
async switchChain({ chainId }) {
|
|
116
|
-
const chain = config.chains.find((chain) => chain.id === chainId);
|
|
117
|
-
if (!chain)
|
|
118
|
-
throw new SwitchChainError(new ChainNotConfiguredError());
|
|
119
|
-
const provider = await this.getProvider();
|
|
120
|
-
try {
|
|
121
|
-
await provider.request({
|
|
122
|
-
method: 'wallet_switchEthereumChain',
|
|
123
|
-
params: [{ chainId: numberToHex(chainId) }],
|
|
124
|
-
});
|
|
125
|
-
return chain;
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
throw new SwitchChainError(error);
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
onAccountsChanged(accounts) {
|
|
132
|
-
if (accounts.length === 0)
|
|
133
|
-
this.onDisconnect();
|
|
134
|
-
else
|
|
135
|
-
config.emitter.emit('change', {
|
|
136
|
-
accounts: accounts.map((x) => getAddress(x)),
|
|
137
|
-
});
|
|
138
|
-
},
|
|
139
|
-
onChainChanged(chain) {
|
|
140
|
-
const chainId = Number(chain);
|
|
141
|
-
config.emitter.emit('change', { chainId });
|
|
142
|
-
},
|
|
143
|
-
async onDisconnect() {
|
|
144
|
-
config.emitter.emit('disconnect');
|
|
145
|
-
const provider = await this.getProvider();
|
|
146
|
-
if (onAccountsChanged) {
|
|
147
|
-
provider.removeListener('accountsChanged', onAccountsChanged);
|
|
148
|
-
onAccountsChanged = undefined;
|
|
149
|
-
}
|
|
150
|
-
if (onChainChanged) {
|
|
151
|
-
provider.removeListener('chainChanged', onChainChanged);
|
|
152
|
-
onChainChanged = undefined;
|
|
153
|
-
}
|
|
154
|
-
if (onDisconnect) {
|
|
155
|
-
provider.removeListener('disconnect', onDisconnect);
|
|
156
|
-
onDisconnect = undefined;
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
}));
|
|
160
|
-
}
|
|
161
|
-
//# sourceMappingURL=gemini.js.map
|
package/dist/esm/gemini.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/gemini.ts"],"names":[],"mappings":"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"}
|
package/dist/types/gemini.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AppMetadata, ProviderInterface } from '@gemini-wallet/core';
|
|
2
|
-
export type GeminiParameters = {
|
|
3
|
-
appMetadata?: AppMetadata;
|
|
4
|
-
};
|
|
5
|
-
export declare function gemini(parameters?: GeminiParameters): import("@wagmi/core").CreateConnectorFn<ProviderInterface, Record<string, unknown>, Record<string, unknown>>;
|
|
6
|
-
export declare namespace gemini {
|
|
7
|
-
var type: "gemini";
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAazE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAGD,wBAAgB,MAAM,CAAC,UAAU,GAAE,gBAAqB,gHAoKvD;yBApKe,MAAM"}
|
package/src/gemini.ts
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import type { AppMetadata, ProviderInterface } from '@gemini-wallet/core'
|
|
2
|
-
import {
|
|
3
|
-
ChainNotConfiguredError,
|
|
4
|
-
type Connector,
|
|
5
|
-
createConnector,
|
|
6
|
-
} from '@wagmi/core'
|
|
7
|
-
import {
|
|
8
|
-
getAddress,
|
|
9
|
-
numberToHex,
|
|
10
|
-
SwitchChainError,
|
|
11
|
-
UserRejectedRequestError,
|
|
12
|
-
} from 'viem'
|
|
13
|
-
|
|
14
|
-
export type GeminiParameters = {
|
|
15
|
-
appMetadata?: AppMetadata
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
gemini.type = 'gemini' as const
|
|
19
|
-
export function gemini(parameters: GeminiParameters = {}) {
|
|
20
|
-
type Provider = ProviderInterface
|
|
21
|
-
|
|
22
|
-
let walletProvider: Provider | undefined
|
|
23
|
-
let onAccountsChanged: Connector['onAccountsChanged'] | undefined
|
|
24
|
-
let onChainChanged: Connector['onChainChanged'] | undefined
|
|
25
|
-
let onDisconnect: Connector['onDisconnect'] | undefined
|
|
26
|
-
|
|
27
|
-
return createConnector<Provider>((config) => ({
|
|
28
|
-
id: 'gemini',
|
|
29
|
-
name: 'Gemini Wallet',
|
|
30
|
-
type: gemini.type,
|
|
31
|
-
icon: 'https://keys.gemini.com/images/gemini-wallet-logo.svg',
|
|
32
|
-
async connect({ chainId, withCapabilities } = {}) {
|
|
33
|
-
try {
|
|
34
|
-
const provider = await this.getProvider()
|
|
35
|
-
const accounts = (await provider.request({
|
|
36
|
-
method: 'eth_requestAccounts',
|
|
37
|
-
})) as string[]
|
|
38
|
-
|
|
39
|
-
if (!onAccountsChanged) {
|
|
40
|
-
onAccountsChanged = this.onAccountsChanged.bind(this)
|
|
41
|
-
provider.on('accountsChanged', onAccountsChanged)
|
|
42
|
-
}
|
|
43
|
-
if (!onChainChanged) {
|
|
44
|
-
onChainChanged = this.onChainChanged.bind(this)
|
|
45
|
-
provider.on('chainChanged', onChainChanged)
|
|
46
|
-
}
|
|
47
|
-
if (!onDisconnect) {
|
|
48
|
-
onDisconnect = this.onDisconnect.bind(this)
|
|
49
|
-
provider.on('disconnect', onDisconnect)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
let currentChainId = await this.getChainId()
|
|
53
|
-
if (chainId && currentChainId !== chainId) {
|
|
54
|
-
const chain = await this.switchChain!({ chainId }).catch((error) => {
|
|
55
|
-
if (error.code === UserRejectedRequestError.code) throw error
|
|
56
|
-
return { id: currentChainId }
|
|
57
|
-
})
|
|
58
|
-
currentChainId = chain?.id ?? currentChainId
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
// TODO(v3): Make `withCapabilities: true` default behavior
|
|
63
|
-
accounts: (withCapabilities
|
|
64
|
-
? accounts.map((address) => ({ address, capabilities: {} }))
|
|
65
|
-
: accounts) as never,
|
|
66
|
-
chainId: currentChainId,
|
|
67
|
-
}
|
|
68
|
-
} catch (error) {
|
|
69
|
-
if (
|
|
70
|
-
/(user closed modal|accounts received is empty|user denied account|request rejected)/i.test(
|
|
71
|
-
(error as Error).message,
|
|
72
|
-
)
|
|
73
|
-
)
|
|
74
|
-
throw new UserRejectedRequestError(error as Error)
|
|
75
|
-
throw error
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
async disconnect() {
|
|
79
|
-
const provider = await this.getProvider()
|
|
80
|
-
|
|
81
|
-
if (onAccountsChanged) {
|
|
82
|
-
provider.removeListener('accountsChanged', onAccountsChanged)
|
|
83
|
-
onAccountsChanged = undefined
|
|
84
|
-
}
|
|
85
|
-
if (onChainChanged) {
|
|
86
|
-
provider.removeListener('chainChanged', onChainChanged)
|
|
87
|
-
onChainChanged = undefined
|
|
88
|
-
}
|
|
89
|
-
if (onDisconnect) {
|
|
90
|
-
provider.removeListener('disconnect', onDisconnect)
|
|
91
|
-
onDisconnect = undefined
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
await provider.disconnect()
|
|
95
|
-
},
|
|
96
|
-
async getAccounts() {
|
|
97
|
-
const provider = await this.getProvider()
|
|
98
|
-
const accounts = (await provider.request({
|
|
99
|
-
method: 'eth_accounts',
|
|
100
|
-
})) as string[]
|
|
101
|
-
return accounts.map((x) => getAddress(x))
|
|
102
|
-
},
|
|
103
|
-
async getChainId() {
|
|
104
|
-
const provider = await this.getProvider()
|
|
105
|
-
const chainId = (await provider.request({
|
|
106
|
-
method: 'eth_chainId',
|
|
107
|
-
})) as string
|
|
108
|
-
return Number(chainId)
|
|
109
|
-
},
|
|
110
|
-
async getProvider() {
|
|
111
|
-
if (!walletProvider) {
|
|
112
|
-
const { GeminiWalletProvider } = await (() => {
|
|
113
|
-
// safe webpack optional peer dependency dynamic import
|
|
114
|
-
try {
|
|
115
|
-
return import('@gemini-wallet/core')
|
|
116
|
-
} catch {
|
|
117
|
-
throw new Error('dependency "@gemini-wallet/core" not found')
|
|
118
|
-
}
|
|
119
|
-
})()
|
|
120
|
-
walletProvider = new GeminiWalletProvider({
|
|
121
|
-
appMetadata: parameters.appMetadata ?? {},
|
|
122
|
-
chain: {
|
|
123
|
-
id: config.chains[0]?.id ?? 1,
|
|
124
|
-
rpcUrl: config.chains[0]?.rpcUrls?.default?.http[0],
|
|
125
|
-
},
|
|
126
|
-
})
|
|
127
|
-
}
|
|
128
|
-
return walletProvider
|
|
129
|
-
},
|
|
130
|
-
async isAuthorized() {
|
|
131
|
-
try {
|
|
132
|
-
const accounts = await this.getAccounts()
|
|
133
|
-
return Boolean(accounts.length)
|
|
134
|
-
} catch {
|
|
135
|
-
return false
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
async switchChain({ chainId }) {
|
|
139
|
-
const chain = config.chains.find((chain) => chain.id === chainId)
|
|
140
|
-
if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())
|
|
141
|
-
|
|
142
|
-
const provider = await this.getProvider()
|
|
143
|
-
|
|
144
|
-
try {
|
|
145
|
-
await provider.request({
|
|
146
|
-
method: 'wallet_switchEthereumChain',
|
|
147
|
-
params: [{ chainId: numberToHex(chainId) }],
|
|
148
|
-
})
|
|
149
|
-
return chain
|
|
150
|
-
} catch (error) {
|
|
151
|
-
throw new SwitchChainError(error as Error)
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
onAccountsChanged(accounts) {
|
|
155
|
-
if (accounts.length === 0) this.onDisconnect()
|
|
156
|
-
else
|
|
157
|
-
config.emitter.emit('change', {
|
|
158
|
-
accounts: accounts.map((x: string) => getAddress(x)),
|
|
159
|
-
})
|
|
160
|
-
},
|
|
161
|
-
onChainChanged(chain) {
|
|
162
|
-
const chainId = Number(chain)
|
|
163
|
-
config.emitter.emit('change', { chainId })
|
|
164
|
-
},
|
|
165
|
-
async onDisconnect() {
|
|
166
|
-
config.emitter.emit('disconnect')
|
|
167
|
-
|
|
168
|
-
const provider = await this.getProvider()
|
|
169
|
-
if (onAccountsChanged) {
|
|
170
|
-
provider.removeListener('accountsChanged', onAccountsChanged)
|
|
171
|
-
onAccountsChanged = undefined
|
|
172
|
-
}
|
|
173
|
-
if (onChainChanged) {
|
|
174
|
-
provider.removeListener('chainChanged', onChainChanged)
|
|
175
|
-
onChainChanged = undefined
|
|
176
|
-
}
|
|
177
|
-
if (onDisconnect) {
|
|
178
|
-
provider.removeListener('disconnect', onDisconnect)
|
|
179
|
-
onDisconnect = undefined
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
}))
|
|
183
|
-
}
|