@wagmi/connectors 4.0.0-beta.7 → 4.0.0-beta.9

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.
@@ -1,2 +1,2 @@
1
- export const version = '4.0.0-beta.7';
1
+ export const version = '4.0.0-beta.9';
2
2
  //# sourceMappingURL=version.js.map
@@ -1,6 +1,5 @@
1
1
  export { type InjectedParameters, injected, type MockParameters, mock, } from '@wagmi/core';
2
2
  export { type CoinbaseWalletParameters, coinbaseWallet, } from '../coinbaseWallet.js';
3
- export { type LedgerParameters, ledger } from '../ledger.js';
4
3
  export { type MetaMaskParameters, metaMask } from '../metaMask.js';
5
4
  export { type SafeParameters, safe } from '../safe.js';
6
5
  export { type WalletConnectParameters, walletConnect, } from '../walletConnect.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,QAAQ,EACR,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,KAAK,wBAAwB,EAC7B,cAAc,GACf,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE5D,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EACL,KAAK,uBAAuB,EAC5B,aAAa,GACd,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,QAAQ,EACR,KAAK,cAAc,EACnB,IAAI,GACL,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,KAAK,wBAAwB,EAC7B,cAAc,GACf,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EACL,KAAK,uBAAuB,EAC5B,aAAa,GACd,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"metaMask.d.ts","sourceRoot":"","sources":["../../src/metaMask.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,WAAW,EACZ,MAAM,eAAe,CAAA;AAMtB,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAEL,KAAK,mBAAmB,EASzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,YAAY,CACV,IAAI,CACF,kBAAkB,EAChB,8BAA8B,GAC9B,6BAA6B,GAC7B,wBAAwB,GACxB,gBAAgB,CACnB,CACF,CACF,CAAA;AAGD,wBAAgB,QAAQ,CAAC,UAAU,GAAE,kBAAuB;2BAGjC,mBAAmB,GAAG,IAAI;;gCAEF,IAAI;GA0RtD;yBA/Re,QAAQ"}
1
+ {"version":3,"file":"metaMask.d.ts","sourceRoot":"","sources":["../../src/metaMask.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,WAAW,EACZ,MAAM,eAAe,CAAA;AAMtB,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAEL,KAAK,mBAAmB,EASzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,YAAY,CACV,IAAI,CACF,kBAAkB,EAChB,8BAA8B,GAC9B,6BAA6B,GAC7B,wBAAwB,GACxB,gBAAgB,CACnB,CACF,CACF,CAAA;AAGD,wBAAgB,QAAQ,CAAC,UAAU,GAAE,kBAAuB;2BAGjC,mBAAmB,GAAG,IAAI;;gCAEF,IAAI;GAiStD;yBAtSe,QAAQ"}
@@ -1,2 +1,2 @@
1
- export declare const version = "4.0.0-beta.7";
1
+ export declare const version = "4.0.0-beta.9";
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": "4.0.0-beta.7",
4
+ "version": "4.0.0-beta.9",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "peerDependencies": {
31
31
  "typescript": ">=5.0.4",
32
- "viem": "2.0.0-beta.15",
33
- "@wagmi/core": "2.0.0-beta.7"
32
+ "viem": "2.0.0-beta.16",
33
+ "@wagmi/core": "2.0.0-beta.9"
34
34
  },
35
35
  "peerDependenciesMeta": {
36
36
  "typescript": {
@@ -38,13 +38,12 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "@coinbase/wallet-sdk": "3.9.0-canary.2",
42
- "@ledgerhq/connect-kit-loader": "^1.1.2",
43
- "@metamask/sdk": "^0.14.1",
44
- "@safe-global/safe-apps-provider": "^0.18.0",
45
- "@safe-global/safe-apps-sdk": "^8.1.0",
46
- "@walletconnect/ethereum-provider": "^2.10.1",
47
- "@walletconnect/modal": "^2.6.2"
41
+ "@coinbase/wallet-sdk": "3.9.1",
42
+ "@metamask/sdk": "0.14.1",
43
+ "@safe-global/safe-apps-provider": "0.18.1",
44
+ "@safe-global/safe-apps-sdk": "8.1.0",
45
+ "@walletconnect/ethereum-provider": "2.10.6",
46
+ "@walletconnect/modal": "2.6.2"
48
47
  },
49
48
  "contributors": [
50
49
  "awkweb.eth <t@wevm.dev>",
@@ -10,8 +10,6 @@ export {
10
10
  coinbaseWallet,
11
11
  } from '../coinbaseWallet.js'
12
12
 
13
- export { type LedgerParameters, ledger } from '../ledger.js'
14
-
15
13
  export { type MetaMaskParameters, metaMask } from '../metaMask.js'
16
14
 
17
15
  export { type SafeParameters, safe } from '../safe.js'
package/src/metaMask.ts CHANGED
@@ -114,7 +114,7 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
114
114
  // Switch to chain if provided
115
115
  let currentChainId = await this.getChainId()
116
116
  if (chainId && currentChainId !== chainId) {
117
- const chain = await this.switchChain!({ chainId }).catch(() => ({
117
+ const chain = await this.switchChain?.({ chainId }).catch(() => ({
118
118
  id: currentChainId,
119
119
  }))
120
120
  currentChainId = chain?.id ?? currentChainId
@@ -168,6 +168,13 @@ export function metaMask(parameters: MetaMaskParameters = {}) {
168
168
  enableDebug: false,
169
169
  dappMetadata: { name: 'wagmi' },
170
170
  extensionOnly: true,
171
+ modals: {
172
+ // Disable by default since it pops up when mobile tries to reconnect
173
+ otp() {
174
+ const noop = () => {}
175
+ return { mount: noop, unmount: noop }
176
+ },
177
+ },
171
178
  useDeeplink: true,
172
179
  _source: 'wagmi',
173
180
  ...parameters,
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '4.0.0-beta.7'
1
+ export const version = '4.0.0-beta.9'
@@ -1,164 +0,0 @@
1
- import { SupportedProviders, loadConnectKit, } from '@ledgerhq/connect-kit-loader';
2
- import { ChainNotConfiguredError, createConnector, normalizeChainId, } from '@wagmi/core';
3
- import { SwitchChainError, UserRejectedRequestError, getAddress, numberToHex, } from 'viem';
4
- ledger.type = 'ledger';
5
- export function ledger(parameters = {}) {
6
- let provider_;
7
- let providerPromise;
8
- return createConnector((config) => ({
9
- id: 'ledger',
10
- name: 'Ledger',
11
- type: ledger.type,
12
- async setup() {
13
- const provider = await this.getProvider().catch(() => null);
14
- if (!provider)
15
- return;
16
- provider.on('connect', this.onConnect.bind(this));
17
- provider.on('session_delete', this.onSessionDelete.bind(this));
18
- },
19
- async connect({ chainId } = {}) {
20
- try {
21
- const provider = await this.getProvider();
22
- // TODO: Update this logic to be more stable (a la WalletConnect connector)
23
- // Don't request accounts if we have a session, like when reloading with
24
- // an active WC v2 session
25
- if (!provider.session)
26
- await provider.request({ method: 'eth_requestAccounts' });
27
- const accounts = await this.getAccounts();
28
- provider.removeListener('connect', this.onConnect.bind(this));
29
- provider.on('accountsChanged', this.onAccountsChanged.bind(this));
30
- provider.on('chainChanged', this.onChainChanged);
31
- provider.on('disconnect', this.onDisconnect.bind(this));
32
- provider.on('session_delete', this.onSessionDelete.bind(this));
33
- // Switch to chain if provided
34
- let currentChainId = await this.getChainId();
35
- if (chainId && currentChainId !== chainId) {
36
- const chain = await this.switchChain({ chainId }).catch(() => ({
37
- id: currentChainId,
38
- }));
39
- currentChainId = chain?.id ?? currentChainId;
40
- }
41
- return { accounts, chainId: currentChainId };
42
- }
43
- catch (error) {
44
- if (/user rejected/i.test(error?.message))
45
- throw new UserRejectedRequestError(error);
46
- throw error;
47
- }
48
- },
49
- async disconnect() {
50
- const provider = await this.getProvider();
51
- try {
52
- await provider?.disconnect?.().catch(() => { });
53
- }
54
- catch (error) {
55
- if (!/No matching key/i.test(error.message))
56
- throw error;
57
- }
58
- finally {
59
- provider.removeListener('accountsChanged', this.onAccountsChanged.bind(this));
60
- provider.removeListener('chainChanged', this.onChainChanged);
61
- provider.removeListener('disconnect', this.onDisconnect.bind(this));
62
- provider.removeListener('session_delete', this.onSessionDelete.bind(this));
63
- provider.on('connect', this.onConnect.bind(this));
64
- }
65
- },
66
- async getAccounts() {
67
- const provider = await this.getProvider();
68
- return (await provider.request({ method: 'eth_accounts' })).map(getAddress);
69
- },
70
- async getProvider({ chainId } = {}) {
71
- async function initProvider() {
72
- const connectKit = await loadConnectKit();
73
- if (parameters.enableDebugLogs)
74
- connectKit.enableDebugLogs();
75
- const { optionalEvents, optionalMethods, projectId, requiredChains, requiredEvents, requiredMethods, } = parameters;
76
- connectKit.checkSupport({
77
- chains: requiredChains,
78
- events: requiredEvents,
79
- methods: requiredMethods,
80
- optionalChains: config.chains.map(({ id }) => id),
81
- optionalEvents,
82
- optionalMethods,
83
- projectId,
84
- providerType: SupportedProviders.Ethereum,
85
- rpcMap: Object.fromEntries(config.chains.map((chain) => [
86
- chain.id,
87
- chain.rpcUrls.default.http[0],
88
- ])),
89
- walletConnectVersion: 2,
90
- });
91
- return connectKit.getProvider();
92
- }
93
- if (!provider_) {
94
- if (!providerPromise)
95
- providerPromise = initProvider();
96
- provider_ = await providerPromise;
97
- }
98
- if (chainId)
99
- await this.switchChain({ chainId });
100
- return provider_;
101
- },
102
- async getChainId() {
103
- const provider = await this.getProvider();
104
- const chainId = await provider.request({ method: 'eth_chainId' });
105
- return normalizeChainId(chainId);
106
- },
107
- async isAuthorized() {
108
- try {
109
- const accounts = await this.getAccounts();
110
- return !!accounts.length;
111
- }
112
- catch {
113
- return false;
114
- }
115
- },
116
- async switchChain({ chainId }) {
117
- const chain = config.chains.find((chain) => chain.id === chainId);
118
- if (!chain)
119
- throw new SwitchChainError(new ChainNotConfiguredError());
120
- try {
121
- const provider = await this.getProvider();
122
- await provider.request({
123
- method: 'wallet_switchEthereumChain',
124
- params: [{ chainId: numberToHex(chainId) }],
125
- });
126
- return chain;
127
- }
128
- catch (error) {
129
- const message = typeof error === 'string'
130
- ? error
131
- : error?.message;
132
- if (/user rejected request/i.test(message))
133
- throw new UserRejectedRequestError(error);
134
- throw new SwitchChainError(error);
135
- }
136
- },
137
- onAccountsChanged(accounts) {
138
- if (accounts.length === 0)
139
- config.emitter.emit('disconnect');
140
- else
141
- config.emitter.emit('change', { accounts: accounts.map(getAddress) });
142
- },
143
- onChainChanged(chain) {
144
- const chainId = normalizeChainId(chain);
145
- config.emitter.emit('change', { chainId });
146
- },
147
- async onConnect(connectInfo) {
148
- const chainId = normalizeChainId(connectInfo.chainId);
149
- const accounts = await this.getAccounts();
150
- config.emitter.emit('connect', { accounts, chainId });
151
- },
152
- async onDisconnect(_error) {
153
- config.emitter.emit('disconnect');
154
- const provider = await this.getProvider();
155
- provider.removeListener('accountsChanged', this.onAccountsChanged);
156
- provider.removeListener('chainChanged', this.onChainChanged);
157
- provider.removeListener('disconnect', this.onDisconnect.bind(this));
158
- },
159
- onSessionDelete() {
160
- this.onDisconnect();
161
- },
162
- }));
163
- }
164
- //# sourceMappingURL=ledger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/ledger.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { type EthereumProvider } from '@ledgerhq/connect-kit-loader';
2
- import { type ProviderConnectInfo } from 'viem';
3
- export type LedgerParameters = {
4
- enableDebugLogs?: boolean | undefined;
5
- optionalEvents?: string[] | undefined;
6
- optionalMethods?: string[] | undefined;
7
- projectId?: string | undefined;
8
- requiredChains?: number[] | undefined;
9
- requiredEvents?: string[] | undefined;
10
- requiredMethods?: string[] | undefined;
11
- };
12
- export declare function ledger(parameters?: LedgerParameters): import("@wagmi/core").CreateConnectorFn<EthereumProvider, {
13
- onConnect(connectInfo: ProviderConnectInfo): void;
14
- onSessionDelete(data: {
15
- topic: string;
16
- }): void;
17
- }, {}>;
18
- export declare namespace ledger {
19
- var type: "ledger";
20
- }
21
- //# sourceMappingURL=ledger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAA;AAMrC,OAAO,EACL,KAAK,mBAAmB,EAMzB,MAAM,MAAM,CAAA;AAEb,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CACvC,CAAA;AAGD,wBAAgB,MAAM,CAAC,UAAU,GAAE,gBAAqB;2BAG7B,mBAAmB,GAAG,IAAI;0BAC3B;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;OAiLjD;yBArLe,MAAM"}
package/src/ledger.ts DELETED
@@ -1,212 +0,0 @@
1
- import {
2
- type EthereumProvider,
3
- SupportedProviders,
4
- loadConnectKit,
5
- } from '@ledgerhq/connect-kit-loader'
6
- import {
7
- ChainNotConfiguredError,
8
- createConnector,
9
- normalizeChainId,
10
- } from '@wagmi/core'
11
- import {
12
- type ProviderConnectInfo,
13
- type ProviderRpcError,
14
- SwitchChainError,
15
- UserRejectedRequestError,
16
- getAddress,
17
- numberToHex,
18
- } from 'viem'
19
-
20
- export type LedgerParameters = {
21
- enableDebugLogs?: boolean | undefined
22
- optionalEvents?: string[] | undefined
23
- optionalMethods?: string[] | undefined
24
- projectId?: string | undefined
25
- requiredChains?: number[] | undefined
26
- requiredEvents?: string[] | undefined
27
- requiredMethods?: string[] | undefined
28
- }
29
-
30
- ledger.type = 'ledger' as const
31
- export function ledger(parameters: LedgerParameters = {}) {
32
- type Provider = EthereumProvider
33
- type Properties = {
34
- onConnect(connectInfo: ProviderConnectInfo): void
35
- onSessionDelete(data: { topic: string }): void
36
- }
37
-
38
- let provider_: Provider | undefined
39
- let providerPromise: Promise<typeof provider_>
40
-
41
- return createConnector<Provider, Properties>((config) => ({
42
- id: 'ledger',
43
- name: 'Ledger',
44
- type: ledger.type,
45
- async setup() {
46
- const provider = await this.getProvider().catch(() => null)
47
- if (!provider) return
48
- provider.on('connect', this.onConnect.bind(this))
49
- provider.on('session_delete', this.onSessionDelete.bind(this))
50
- },
51
- async connect({ chainId } = {}) {
52
- try {
53
- const provider = await this.getProvider()
54
-
55
- // TODO: Update this logic to be more stable (a la WalletConnect connector)
56
- // Don't request accounts if we have a session, like when reloading with
57
- // an active WC v2 session
58
- if (!provider.session)
59
- await provider.request({ method: 'eth_requestAccounts' })
60
-
61
- const accounts = await this.getAccounts()
62
-
63
- provider.removeListener('connect', this.onConnect.bind(this))
64
- provider.on('accountsChanged', this.onAccountsChanged.bind(this))
65
- provider.on('chainChanged', this.onChainChanged)
66
- provider.on('disconnect', this.onDisconnect.bind(this))
67
- provider.on('session_delete', this.onSessionDelete.bind(this))
68
-
69
- // Switch to chain if provided
70
- let currentChainId = await this.getChainId()
71
- if (chainId && currentChainId !== chainId) {
72
- const chain = await this.switchChain!({ chainId }).catch(() => ({
73
- id: currentChainId,
74
- }))
75
- currentChainId = chain?.id ?? currentChainId
76
- }
77
-
78
- return { accounts, chainId: currentChainId }
79
- } catch (error) {
80
- if (/user rejected/i.test((error as ProviderRpcError)?.message))
81
- throw new UserRejectedRequestError(error as Error)
82
- throw error
83
- }
84
- },
85
- async disconnect() {
86
- const provider = await this.getProvider()
87
- try {
88
- await provider?.disconnect?.().catch(() => {})
89
- } catch (error) {
90
- if (!/No matching key/i.test((error as Error).message)) throw error
91
- } finally {
92
- provider.removeListener(
93
- 'accountsChanged',
94
- this.onAccountsChanged.bind(this),
95
- )
96
- provider.removeListener('chainChanged', this.onChainChanged)
97
- provider.removeListener('disconnect', this.onDisconnect.bind(this))
98
- provider.removeListener(
99
- 'session_delete',
100
- this.onSessionDelete.bind(this),
101
- )
102
- provider.on('connect', this.onConnect.bind(this))
103
- }
104
- },
105
- async getAccounts() {
106
- const provider = await this.getProvider()
107
- return (await provider.request<string[]>({ method: 'eth_accounts' })).map(
108
- getAddress,
109
- )
110
- },
111
- async getProvider({ chainId } = {}) {
112
- async function initProvider() {
113
- const connectKit = await loadConnectKit()
114
- if (parameters.enableDebugLogs) connectKit.enableDebugLogs()
115
-
116
- const {
117
- optionalEvents,
118
- optionalMethods,
119
- projectId,
120
- requiredChains,
121
- requiredEvents,
122
- requiredMethods,
123
- } = parameters
124
- connectKit.checkSupport({
125
- chains: requiredChains,
126
- events: requiredEvents,
127
- methods: requiredMethods,
128
- optionalChains: config.chains.map(({ id }) => id),
129
- optionalEvents,
130
- optionalMethods,
131
- projectId,
132
- providerType: SupportedProviders.Ethereum,
133
- rpcMap: Object.fromEntries(
134
- config.chains.map((chain) => [
135
- chain.id,
136
- chain.rpcUrls.default.http[0]!,
137
- ]),
138
- ),
139
- walletConnectVersion: 2,
140
- })
141
-
142
- return connectKit.getProvider()
143
- }
144
-
145
- if (!provider_) {
146
- if (!providerPromise) providerPromise = initProvider()
147
- provider_ = await providerPromise
148
- }
149
- if (chainId) await this.switchChain!({ chainId })
150
- return provider_!
151
- },
152
- async getChainId() {
153
- const provider = await this.getProvider()
154
- const chainId = await provider.request({ method: 'eth_chainId' })
155
- return normalizeChainId(chainId)
156
- },
157
- async isAuthorized() {
158
- try {
159
- const accounts = await this.getAccounts()
160
- return !!accounts.length
161
- } catch {
162
- return false
163
- }
164
- },
165
- async switchChain({ chainId }) {
166
- const chain = config.chains.find((chain) => chain.id === chainId)
167
- if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())
168
-
169
- try {
170
- const provider = await this.getProvider()
171
- await provider.request({
172
- method: 'wallet_switchEthereumChain',
173
- params: [{ chainId: numberToHex(chainId) }],
174
- })
175
- return chain
176
- } catch (error) {
177
- const message =
178
- typeof error === 'string'
179
- ? error
180
- : (error as ProviderRpcError)?.message
181
- if (/user rejected request/i.test(message))
182
- throw new UserRejectedRequestError(error as Error)
183
-
184
- throw new SwitchChainError(error as Error)
185
- }
186
- },
187
- onAccountsChanged(accounts) {
188
- if (accounts.length === 0) config.emitter.emit('disconnect')
189
- else config.emitter.emit('change', { accounts: accounts.map(getAddress) })
190
- },
191
- onChainChanged(chain) {
192
- const chainId = normalizeChainId(chain)
193
- config.emitter.emit('change', { chainId })
194
- },
195
- async onConnect(connectInfo) {
196
- const chainId = normalizeChainId(connectInfo.chainId)
197
- const accounts = await this.getAccounts()
198
- config.emitter.emit('connect', { accounts, chainId })
199
- },
200
- async onDisconnect(_error) {
201
- config.emitter.emit('disconnect')
202
-
203
- const provider = await this.getProvider()
204
- provider.removeListener('accountsChanged', this.onAccountsChanged)
205
- provider.removeListener('chainChanged', this.onChainChanged)
206
- provider.removeListener('disconnect', this.onDisconnect.bind(this))
207
- },
208
- onSessionDelete() {
209
- this.onDisconnect()
210
- },
211
- }))
212
- }