@reown/appkit-wagmi-react-native 2.0.0-alpha.3 → 2.0.0-alpha.5

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.
@@ -6,52 +6,32 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.UniversalConnector = UniversalConnector;
7
7
  var _viem = require("viem");
8
8
  var _wagmi = require("wagmi");
9
- var _helpers = require("../utils/helpers");
10
9
  function UniversalConnector(appKitProvidedConnector) {
11
10
  let provider;
12
- let accountsChangedHandler;
13
- let chainChangedHandler;
14
- let disconnectHandler;
11
+ let accountsChanged;
12
+ let chainChanged;
13
+ let sessionDelete;
14
+ let disconnect;
15
15
  return (0, _wagmi.createConnector)(config => ({
16
16
  id: 'walletconnect',
17
17
  name: 'WalletConnect',
18
18
  type: 'walletconnect',
19
- ready: !!appKitProvidedConnector.getProvider(),
19
+ ready: !!appKitProvidedConnector.getProvider('eip155'),
20
20
  async setup() {
21
- provider = appKitProvidedConnector.getProvider();
22
- if (provider?.on) {
23
- accountsChangedHandler = accounts => {
24
- const hexAccounts = accounts.map(acc => (0, _viem.getAddress)(acc));
25
- config.emitter.emit('change', {
26
- accounts: hexAccounts
27
- });
28
- if (hexAccounts.length === 0) {
29
- config.emitter.emit('disconnect');
30
- }
31
- };
32
- chainChangedHandler = chainId => {
33
- const newChainId = typeof chainId === 'string' ? parseInt(chainId, 10) : chainId;
34
- config.emitter.emit('change', {
35
- chainId: newChainId
36
- });
37
- };
38
- disconnectHandler = error => {
39
- config.emitter.emit('disconnect');
40
- if (error) config.emitter.emit('error', {
41
- error
42
- });
43
- };
44
- if (accountsChangedHandler) provider.on('accountsChanged', accountsChangedHandler);
45
- if (chainChangedHandler) provider.on('chainChanged', chainChangedHandler);
46
- if (disconnectHandler) provider.on('disconnect', disconnectHandler);
47
- if (disconnectHandler) provider.on('session_delete', disconnectHandler);
21
+ const _provider = await this.getProvider().catch(() => null);
22
+ if (!_provider) {
23
+ return;
24
+ }
25
+ if (!sessionDelete) {
26
+ sessionDelete = this.onSessionDelete.bind(this);
27
+ _provider.on('session_delete', sessionDelete);
48
28
  }
49
29
  },
50
30
  async connect({
51
31
  chainId
52
32
  } = {}) {
53
33
  try {
54
- const _provider = await this.getProvider();
34
+ const _provider = appKitProvidedConnector.getProvider('eip155');
55
35
  if (!_provider) throw new _wagmi.ProviderNotFoundError();
56
36
 
57
37
  // AppKit connector is already connected or handles its own connection.
@@ -69,7 +49,22 @@ function UniversalConnector(appKitProvidedConnector) {
69
49
  });
70
50
  currentChainId = chainId;
71
51
  }
72
- this.ready = true;
52
+ if (!accountsChanged) {
53
+ accountsChanged = this.onAccountsChanged.bind(this);
54
+ _provider.on('accountsChanged', accountsChanged);
55
+ }
56
+ if (!chainChanged) {
57
+ chainChanged = this.onChainChanged.bind(this);
58
+ _provider.on('chainChanged', chainChanged);
59
+ }
60
+ if (!disconnect) {
61
+ disconnect = this.onDisconnect.bind(this);
62
+ _provider.on('disconnect', disconnect);
63
+ }
64
+ if (!sessionDelete) {
65
+ sessionDelete = this.onSessionDelete.bind(this);
66
+ _provider.on('session_delete', sessionDelete);
67
+ }
73
68
  return {
74
69
  accounts: accountAddresses,
75
70
  chainId: currentChainId
@@ -80,20 +75,34 @@ function UniversalConnector(appKitProvidedConnector) {
80
75
  }
81
76
  },
82
77
  async disconnect() {
83
- await appKitProvidedConnector.disconnect();
84
- config.emitter.emit('message', {
85
- type: 'externalDisconnect'
86
- });
87
- if (provider?.off && accountsChangedHandler && chainChangedHandler && disconnectHandler) {
88
- provider.off('accountsChanged', accountsChangedHandler);
89
- provider.off('chainChanged', chainChangedHandler);
90
- provider.off('disconnect', disconnectHandler);
91
- provider.off('session_delete', disconnectHandler);
92
- accountsChangedHandler = undefined;
93
- chainChangedHandler = undefined;
94
- disconnectHandler = undefined;
78
+ const _provider = await this.getProvider().catch(() => null);
79
+ try {
80
+ await appKitProvidedConnector.disconnect();
81
+ config.emitter.emit('message', {
82
+ type: 'externalDisconnect'
83
+ });
84
+ } catch (error) {
85
+ if (!/No matching key/i.test(error.message)) {
86
+ throw error;
87
+ }
88
+ } finally {
89
+ if (chainChanged) {
90
+ _provider?.off('chainChanged', chainChanged);
91
+ chainChanged = undefined;
92
+ }
93
+ if (disconnect) {
94
+ _provider?.off('disconnect', disconnect);
95
+ disconnect = undefined;
96
+ }
97
+ if (accountsChanged) {
98
+ _provider?.off('accountsChanged', accountsChanged);
99
+ accountsChanged = undefined;
100
+ }
101
+ if (sessionDelete) {
102
+ _provider?.off('session_delete', sessionDelete);
103
+ sessionDelete = undefined;
104
+ }
95
105
  }
96
- this.ready = false;
97
106
  },
98
107
  async getAccounts() {
99
108
  const namespaces = appKitProvidedConnector.getNamespaces();
@@ -127,7 +136,7 @@ function UniversalConnector(appKitProvidedConnector) {
127
136
  },
128
137
  async getProvider() {
129
138
  if (!provider) {
130
- provider = appKitProvidedConnector.getProvider();
139
+ provider = appKitProvidedConnector.getProvider('eip155');
131
140
  }
132
141
  return provider;
133
142
  },
@@ -142,7 +151,7 @@ function UniversalConnector(appKitProvidedConnector) {
142
151
  async switchChain({
143
152
  chainId
144
153
  }) {
145
- const _provider = await this.getProvider();
154
+ const _provider = appKitProvidedConnector.getProvider('eip155');
146
155
  if (!_provider) throw new Error('Provider not available for switching chain.');
147
156
  const newChain = config.chains.find(c => c.id === chainId);
148
157
  if (!newChain) throw new _viem.SwitchChainError(new _wagmi.ChainNotConfiguredError());
@@ -153,29 +162,23 @@ function UniversalConnector(appKitProvidedConnector) {
153
162
  chainId: (0, _viem.numberToHex)(chainId)
154
163
  }]
155
164
  });
156
- config.emitter.emit('change', {
157
- chainId
158
- });
159
165
  return newChain;
160
- } catch (error) {
161
- // Try to add chain if switch failed (common pattern)
162
- //4902 in MetaMask: Unrecognized chain ID
166
+ } catch (err) {
167
+ const error = err;
168
+ if (/(user rejected)/i.test(error.message)) throw new _viem.UserRejectedRequestError(error);
163
169
  if (error?.code === 4902 || error?.data?.originalError?.code === 4902) {
170
+ // Indicates chain is not added to provider
164
171
  try {
172
+ const addEthereumChainParams = {
173
+ chainId: (0, _viem.numberToHex)(chainId),
174
+ chainName: newChain.name,
175
+ nativeCurrency: newChain.nativeCurrency,
176
+ rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
177
+ blockExplorerUrls: [newChain.blockExplorers?.default?.url]
178
+ };
165
179
  await _provider.request({
166
180
  method: 'wallet_addEthereumChain',
167
- params: [{
168
- chainId: (0, _viem.numberToHex)(chainId),
169
- chainName: newChain.name,
170
- nativeCurrency: newChain.nativeCurrency,
171
- rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
172
- // Take first default HTTP RPC URL
173
- blockExplorerUrls: [newChain.blockExplorers?.default?.url]
174
- }]
175
- });
176
- await appKitProvidedConnector.switchNetwork((0, _helpers.formatNetwork)(newChain));
177
- config.emitter.emit('change', {
178
- chainId
181
+ params: [addEthereumChainParams]
179
182
  });
180
183
  return newChain;
181
184
  } catch (addError) {
@@ -186,18 +189,64 @@ function UniversalConnector(appKitProvidedConnector) {
186
189
  }
187
190
  },
188
191
  onAccountsChanged(accounts) {
189
- if (accounts.length === 0) this.onDisconnect();else config.emitter.emit('change', {
192
+ //Only emit if the account is an evm account
193
+ const shouldEmit = accounts.some(account => account.startsWith('0x'));
194
+ if (accounts.length === 0) this.onDisconnect();else if (shouldEmit) config.emitter.emit('change', {
190
195
  accounts: accounts.map(x => (0, _viem.getAddress)(x))
191
196
  });
192
197
  },
193
198
  onChainChanged(chain) {
194
199
  const chainId = Number(chain);
195
- config.emitter.emit('change', {
196
- chainId
197
- });
200
+
201
+ //Only emit if the chain is in the config (evm)
202
+ const shouldEmit = config.chains.some(c => c.id === chainId);
203
+ if (shouldEmit) {
204
+ config.emitter.emit('change', {
205
+ chainId
206
+ });
207
+ }
198
208
  },
199
- onDisconnect: () => {
209
+ async onDisconnect() {
200
210
  config.emitter.emit('disconnect');
211
+ try {
212
+ const _provider = await this.getProvider();
213
+
214
+ // Clean up event listeners
215
+ if (accountsChanged) {
216
+ _provider.off('accountsChanged', accountsChanged);
217
+ accountsChanged = undefined;
218
+ }
219
+ if (chainChanged) {
220
+ _provider.off('chainChanged', chainChanged);
221
+ chainChanged = undefined;
222
+ }
223
+ if (disconnect) {
224
+ _provider.off('disconnect', disconnect);
225
+ disconnect = undefined;
226
+ }
227
+ if (sessionDelete) {
228
+ _provider.off('session_delete', sessionDelete);
229
+ sessionDelete = undefined;
230
+ }
231
+ } catch (error) {
232
+ // If provider is not available, still clean up local references
233
+ // to prevent memory leaks
234
+ if (accountsChanged) {
235
+ accountsChanged = undefined;
236
+ }
237
+ if (chainChanged) {
238
+ chainChanged = undefined;
239
+ }
240
+ if (disconnect) {
241
+ disconnect = undefined;
242
+ }
243
+ if (sessionDelete) {
244
+ sessionDelete = undefined;
245
+ }
246
+ }
247
+ },
248
+ onSessionDelete() {
249
+ this.onDisconnect();
201
250
  }
202
251
  }));
203
252
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_viem","require","_wagmi","_helpers","UniversalConnector","appKitProvidedConnector","provider","accountsChangedHandler","chainChangedHandler","disconnectHandler","createConnector","config","id","name","type","ready","getProvider","setup","on","accounts","hexAccounts","map","acc","getAddress","emitter","emit","length","chainId","newChainId","parseInt","error","connect","_provider","ProviderNotFoundError","accountAddresses","getAccounts","UserRejectedRequestError","Error","currentChainId","getChainId","switchChain","disconnect","off","undefined","namespaces","getNamespaces","eip155Accounts","eip155","caipAddr","parts","split","filter","addrPart","chainIdNum","isNaN","chains","isAuthorized","newChain","find","c","SwitchChainError","ChainNotConfiguredError","request","method","params","numberToHex","code","data","originalError","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","url","switchNetwork","formatNetwork","addError","onAccountsChanged","onDisconnect","x","onChainChanged","chain","Number"],"sourceRoot":"../../../src","sources":["connectors/UniversalConnector.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_viem","require","_wagmi","UniversalConnector","appKitProvidedConnector","provider","accountsChanged","chainChanged","sessionDelete","disconnect","createConnector","config","id","name","type","ready","getProvider","setup","_provider","catch","onSessionDelete","bind","on","connect","chainId","ProviderNotFoundError","accountAddresses","getAccounts","length","UserRejectedRequestError","Error","currentChainId","getChainId","switchChain","onAccountsChanged","onChainChanged","onDisconnect","accounts","error","emitter","emit","test","message","off","undefined","namespaces","getNamespaces","eip155Accounts","eip155","map","caipAddr","parts","split","filter","addrPart","getAddress","parseInt","chainIdNum","isNaN","chains","isAuthorized","newChain","find","c","SwitchChainError","ChainNotConfiguredError","request","method","params","numberToHex","err","code","data","originalError","addEthereumChainParams","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","url","addError","shouldEmit","some","account","startsWith","x","chain","Number"],"sourceRoot":"../../../src","sources":["connectors/UniversalConnector.ts"],"mappings":"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","ignoreList":[]}
@@ -2,52 +2,32 @@
2
2
 
3
3
  import { getAddress, numberToHex, SwitchChainError, UserRejectedRequestError } from 'viem';
4
4
  import { ChainNotConfiguredError, createConnector, ProviderNotFoundError } from 'wagmi';
5
- import { formatNetwork } from '../utils/helpers';
6
5
  export function UniversalConnector(appKitProvidedConnector) {
7
6
  let provider;
8
- let accountsChangedHandler;
9
- let chainChangedHandler;
10
- let disconnectHandler;
7
+ let accountsChanged;
8
+ let chainChanged;
9
+ let sessionDelete;
10
+ let disconnect;
11
11
  return createConnector(config => ({
12
12
  id: 'walletconnect',
13
13
  name: 'WalletConnect',
14
14
  type: 'walletconnect',
15
- ready: !!appKitProvidedConnector.getProvider(),
15
+ ready: !!appKitProvidedConnector.getProvider('eip155'),
16
16
  async setup() {
17
- provider = appKitProvidedConnector.getProvider();
18
- if (provider?.on) {
19
- accountsChangedHandler = accounts => {
20
- const hexAccounts = accounts.map(acc => getAddress(acc));
21
- config.emitter.emit('change', {
22
- accounts: hexAccounts
23
- });
24
- if (hexAccounts.length === 0) {
25
- config.emitter.emit('disconnect');
26
- }
27
- };
28
- chainChangedHandler = chainId => {
29
- const newChainId = typeof chainId === 'string' ? parseInt(chainId, 10) : chainId;
30
- config.emitter.emit('change', {
31
- chainId: newChainId
32
- });
33
- };
34
- disconnectHandler = error => {
35
- config.emitter.emit('disconnect');
36
- if (error) config.emitter.emit('error', {
37
- error
38
- });
39
- };
40
- if (accountsChangedHandler) provider.on('accountsChanged', accountsChangedHandler);
41
- if (chainChangedHandler) provider.on('chainChanged', chainChangedHandler);
42
- if (disconnectHandler) provider.on('disconnect', disconnectHandler);
43
- if (disconnectHandler) provider.on('session_delete', disconnectHandler);
17
+ const _provider = await this.getProvider().catch(() => null);
18
+ if (!_provider) {
19
+ return;
20
+ }
21
+ if (!sessionDelete) {
22
+ sessionDelete = this.onSessionDelete.bind(this);
23
+ _provider.on('session_delete', sessionDelete);
44
24
  }
45
25
  },
46
26
  async connect({
47
27
  chainId
48
28
  } = {}) {
49
29
  try {
50
- const _provider = await this.getProvider();
30
+ const _provider = appKitProvidedConnector.getProvider('eip155');
51
31
  if (!_provider) throw new ProviderNotFoundError();
52
32
 
53
33
  // AppKit connector is already connected or handles its own connection.
@@ -65,7 +45,22 @@ export function UniversalConnector(appKitProvidedConnector) {
65
45
  });
66
46
  currentChainId = chainId;
67
47
  }
68
- this.ready = true;
48
+ if (!accountsChanged) {
49
+ accountsChanged = this.onAccountsChanged.bind(this);
50
+ _provider.on('accountsChanged', accountsChanged);
51
+ }
52
+ if (!chainChanged) {
53
+ chainChanged = this.onChainChanged.bind(this);
54
+ _provider.on('chainChanged', chainChanged);
55
+ }
56
+ if (!disconnect) {
57
+ disconnect = this.onDisconnect.bind(this);
58
+ _provider.on('disconnect', disconnect);
59
+ }
60
+ if (!sessionDelete) {
61
+ sessionDelete = this.onSessionDelete.bind(this);
62
+ _provider.on('session_delete', sessionDelete);
63
+ }
69
64
  return {
70
65
  accounts: accountAddresses,
71
66
  chainId: currentChainId
@@ -76,20 +71,34 @@ export function UniversalConnector(appKitProvidedConnector) {
76
71
  }
77
72
  },
78
73
  async disconnect() {
79
- await appKitProvidedConnector.disconnect();
80
- config.emitter.emit('message', {
81
- type: 'externalDisconnect'
82
- });
83
- if (provider?.off && accountsChangedHandler && chainChangedHandler && disconnectHandler) {
84
- provider.off('accountsChanged', accountsChangedHandler);
85
- provider.off('chainChanged', chainChangedHandler);
86
- provider.off('disconnect', disconnectHandler);
87
- provider.off('session_delete', disconnectHandler);
88
- accountsChangedHandler = undefined;
89
- chainChangedHandler = undefined;
90
- disconnectHandler = undefined;
74
+ const _provider = await this.getProvider().catch(() => null);
75
+ try {
76
+ await appKitProvidedConnector.disconnect();
77
+ config.emitter.emit('message', {
78
+ type: 'externalDisconnect'
79
+ });
80
+ } catch (error) {
81
+ if (!/No matching key/i.test(error.message)) {
82
+ throw error;
83
+ }
84
+ } finally {
85
+ if (chainChanged) {
86
+ _provider?.off('chainChanged', chainChanged);
87
+ chainChanged = undefined;
88
+ }
89
+ if (disconnect) {
90
+ _provider?.off('disconnect', disconnect);
91
+ disconnect = undefined;
92
+ }
93
+ if (accountsChanged) {
94
+ _provider?.off('accountsChanged', accountsChanged);
95
+ accountsChanged = undefined;
96
+ }
97
+ if (sessionDelete) {
98
+ _provider?.off('session_delete', sessionDelete);
99
+ sessionDelete = undefined;
100
+ }
91
101
  }
92
- this.ready = false;
93
102
  },
94
103
  async getAccounts() {
95
104
  const namespaces = appKitProvidedConnector.getNamespaces();
@@ -123,7 +132,7 @@ export function UniversalConnector(appKitProvidedConnector) {
123
132
  },
124
133
  async getProvider() {
125
134
  if (!provider) {
126
- provider = appKitProvidedConnector.getProvider();
135
+ provider = appKitProvidedConnector.getProvider('eip155');
127
136
  }
128
137
  return provider;
129
138
  },
@@ -138,7 +147,7 @@ export function UniversalConnector(appKitProvidedConnector) {
138
147
  async switchChain({
139
148
  chainId
140
149
  }) {
141
- const _provider = await this.getProvider();
150
+ const _provider = appKitProvidedConnector.getProvider('eip155');
142
151
  if (!_provider) throw new Error('Provider not available for switching chain.');
143
152
  const newChain = config.chains.find(c => c.id === chainId);
144
153
  if (!newChain) throw new SwitchChainError(new ChainNotConfiguredError());
@@ -149,29 +158,23 @@ export function UniversalConnector(appKitProvidedConnector) {
149
158
  chainId: numberToHex(chainId)
150
159
  }]
151
160
  });
152
- config.emitter.emit('change', {
153
- chainId
154
- });
155
161
  return newChain;
156
- } catch (error) {
157
- // Try to add chain if switch failed (common pattern)
158
- //4902 in MetaMask: Unrecognized chain ID
162
+ } catch (err) {
163
+ const error = err;
164
+ if (/(user rejected)/i.test(error.message)) throw new UserRejectedRequestError(error);
159
165
  if (error?.code === 4902 || error?.data?.originalError?.code === 4902) {
166
+ // Indicates chain is not added to provider
160
167
  try {
168
+ const addEthereumChainParams = {
169
+ chainId: numberToHex(chainId),
170
+ chainName: newChain.name,
171
+ nativeCurrency: newChain.nativeCurrency,
172
+ rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
173
+ blockExplorerUrls: [newChain.blockExplorers?.default?.url]
174
+ };
161
175
  await _provider.request({
162
176
  method: 'wallet_addEthereumChain',
163
- params: [{
164
- chainId: numberToHex(chainId),
165
- chainName: newChain.name,
166
- nativeCurrency: newChain.nativeCurrency,
167
- rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
168
- // Take first default HTTP RPC URL
169
- blockExplorerUrls: [newChain.blockExplorers?.default?.url]
170
- }]
171
- });
172
- await appKitProvidedConnector.switchNetwork(formatNetwork(newChain));
173
- config.emitter.emit('change', {
174
- chainId
177
+ params: [addEthereumChainParams]
175
178
  });
176
179
  return newChain;
177
180
  } catch (addError) {
@@ -182,18 +185,64 @@ export function UniversalConnector(appKitProvidedConnector) {
182
185
  }
183
186
  },
184
187
  onAccountsChanged(accounts) {
185
- if (accounts.length === 0) this.onDisconnect();else config.emitter.emit('change', {
188
+ //Only emit if the account is an evm account
189
+ const shouldEmit = accounts.some(account => account.startsWith('0x'));
190
+ if (accounts.length === 0) this.onDisconnect();else if (shouldEmit) config.emitter.emit('change', {
186
191
  accounts: accounts.map(x => getAddress(x))
187
192
  });
188
193
  },
189
194
  onChainChanged(chain) {
190
195
  const chainId = Number(chain);
191
- config.emitter.emit('change', {
192
- chainId
193
- });
196
+
197
+ //Only emit if the chain is in the config (evm)
198
+ const shouldEmit = config.chains.some(c => c.id === chainId);
199
+ if (shouldEmit) {
200
+ config.emitter.emit('change', {
201
+ chainId
202
+ });
203
+ }
194
204
  },
195
- onDisconnect: () => {
205
+ async onDisconnect() {
196
206
  config.emitter.emit('disconnect');
207
+ try {
208
+ const _provider = await this.getProvider();
209
+
210
+ // Clean up event listeners
211
+ if (accountsChanged) {
212
+ _provider.off('accountsChanged', accountsChanged);
213
+ accountsChanged = undefined;
214
+ }
215
+ if (chainChanged) {
216
+ _provider.off('chainChanged', chainChanged);
217
+ chainChanged = undefined;
218
+ }
219
+ if (disconnect) {
220
+ _provider.off('disconnect', disconnect);
221
+ disconnect = undefined;
222
+ }
223
+ if (sessionDelete) {
224
+ _provider.off('session_delete', sessionDelete);
225
+ sessionDelete = undefined;
226
+ }
227
+ } catch (error) {
228
+ // If provider is not available, still clean up local references
229
+ // to prevent memory leaks
230
+ if (accountsChanged) {
231
+ accountsChanged = undefined;
232
+ }
233
+ if (chainChanged) {
234
+ chainChanged = undefined;
235
+ }
236
+ if (disconnect) {
237
+ disconnect = undefined;
238
+ }
239
+ if (sessionDelete) {
240
+ sessionDelete = undefined;
241
+ }
242
+ }
243
+ },
244
+ onSessionDelete() {
245
+ this.onDisconnect();
197
246
  }
198
247
  }));
199
248
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getAddress","numberToHex","SwitchChainError","UserRejectedRequestError","ChainNotConfiguredError","createConnector","ProviderNotFoundError","formatNetwork","UniversalConnector","appKitProvidedConnector","provider","accountsChangedHandler","chainChangedHandler","disconnectHandler","config","id","name","type","ready","getProvider","setup","on","accounts","hexAccounts","map","acc","emitter","emit","length","chainId","newChainId","parseInt","error","connect","_provider","accountAddresses","getAccounts","Error","currentChainId","getChainId","switchChain","disconnect","off","undefined","namespaces","getNamespaces","eip155Accounts","eip155","caipAddr","parts","split","filter","addrPart","chainIdNum","isNaN","chains","isAuthorized","newChain","find","c","request","method","params","code","data","originalError","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","url","switchNetwork","addError","onAccountsChanged","onDisconnect","x","onChainChanged","chain","Number"],"sourceRoot":"../../../src","sources":["connectors/UniversalConnector.ts"],"mappings":";;AACA,SACEA,UAAU,EACVC,WAAW,EACXC,gBAAgB,EAChBC,wBAAwB,QAEnB,MAAM;AACb,SAASC,uBAAuB,EAAEC,eAAe,EAAEC,qBAAqB,QAAQ,OAAO;AACvF,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,OAAO,SAASC,kBAAkBA,CAACC,uBAAwC,EAAE;EAC3E,IAAIC,QAA8B;EAElC,IAAIC,sBAAkE;EACtE,IAAIC,mBAAqE;EACzE,IAAIC,iBAAwD;EAI5D,OAAOR,eAAe,CAAsCS,MAAM,KAAK;IACrEC,EAAE,EAAE,eAAe;IACnBC,IAAI,EAAE,eAAe;IACrBC,IAAI,EAAE,eAAwB;IAC9BC,KAAK,EAAE,CAAC,CAACT,uBAAuB,CAACU,WAAW,CAAC,CAAC;IAE9C,MAAMC,KAAKA,CAAA,EAAG;MACZV,QAAQ,GAAGD,uBAAuB,CAACU,WAAW,CAAC,CAAC;MAChD,IAAIT,QAAQ,EAAEW,EAAE,EAAE;QAChBV,sBAAsB,GAAIW,QAAkB,IAAK;UAC/C,MAAMC,WAAW,GAAGD,QAAQ,CAACE,GAAG,CAACC,GAAG,IAAIzB,UAAU,CAACyB,GAAG,CAAC,CAAC;UACxDX,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,QAAQ,EAAE;YAAEL,QAAQ,EAAEC;UAAY,CAAC,CAAC;UACxD,IAAIA,WAAW,CAACK,MAAM,KAAK,CAAC,EAAE;YAC5Bd,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,YAAY,CAAC;UACnC;QACF,CAAC;QACDf,mBAAmB,GAAIiB,OAAwB,IAAK;UAClD,MAAMC,UAAU,GAAG,OAAOD,OAAO,KAAK,QAAQ,GAAGE,QAAQ,CAACF,OAAO,EAAE,EAAE,CAAC,GAAGA,OAAO;UAChFf,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,QAAQ,EAAE;YAAEE,OAAO,EAAEC;UAAW,CAAC,CAAC;QACxD,CAAC;QACDjB,iBAAiB,GAAImB,KAAa,IAAK;UACrClB,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,YAAY,CAAC;UACjC,IAAIK,KAAK,EAAElB,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,OAAO,EAAE;YAAEK;UAAM,CAAC,CAAC;QACpD,CAAC;QAED,IAAIrB,sBAAsB,EAAED,QAAQ,CAACW,EAAE,CAAC,iBAAiB,EAAEV,sBAAsB,CAAC;QAClF,IAAIC,mBAAmB,EAAEF,QAAQ,CAACW,EAAE,CAAC,cAAc,EAAET,mBAAmB,CAAC;QACzE,IAAIC,iBAAiB,EAAEH,QAAQ,CAACW,EAAE,CAAC,YAAY,EAAER,iBAAiB,CAAC;QACnE,IAAIA,iBAAiB,EAAEH,QAAQ,CAACW,EAAE,CAAC,gBAAgB,EAAER,iBAAiB,CAAC;MACzE;IACF,CAAC;IAED,MAAMoB,OAAOA,CAAC;MAAEJ;IAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;MAC9B,IAAI;QACF,MAAMK,SAAS,GAAG,MAAM,IAAI,CAACf,WAAW,CAAC,CAAC;QAC1C,IAAI,CAACe,SAAS,EAAE,MAAM,IAAI5B,qBAAqB,CAAC,CAAC;;QAEjD;QACA;QACA,MAAM6B,gBAAgB,GAAG,MAAM,IAAI,CAACC,WAAW,CAAC,CAAC;QACjD,IAAI,CAACD,gBAAgB,IAAIA,gBAAgB,CAACP,MAAM,KAAK,CAAC,EAAE;UACtD,MAAM,IAAIzB,wBAAwB,CAChC,IAAIkC,KAAK,CAAC,2DAA2D,CACvE,CAAC;QACH;QAEA,IAAIC,cAAc,GAAG,MAAM,IAAI,CAACC,UAAU,CAAC,CAAC;;QAE5C;QACA,IAAIV,OAAO,IAAIS,cAAc,KAAKT,OAAO,EAAE;UACzC,MAAM,IAAI,CAACW,WAAW,GAAG;YAAEX;UAAQ,CAAC,CAAC;UACrCS,cAAc,GAAGT,OAAO;QAC1B;QAEA,IAAI,CAACX,KAAK,GAAG,IAAI;QAEjB,OAAO;UAAEI,QAAQ,EAAEa,gBAAgB;UAAEN,OAAO,EAAES;QAAe,CAAC;MAChE,CAAC,CAAC,OAAON,KAAK,EAAE;QACd,IAAIA,KAAK,YAAY7B,wBAAwB,EAAE,MAAM6B,KAAK;QAC1D,MAAM,IAAI7B,wBAAwB,CAAC6B,KAAc,CAAC,CAAC,CAAC;MACtD;IACF,CAAC;IAED,MAAMS,UAAUA,CAAA,EAAG;MACjB,MAAMhC,uBAAuB,CAACgC,UAAU,CAAC,CAAC;MAC1C3B,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,SAAS,EAAE;QAAEV,IAAI,EAAE;MAAqB,CAAC,CAAC;MAC9D,IAAIP,QAAQ,EAAEgC,GAAG,IAAI/B,sBAAsB,IAAIC,mBAAmB,IAAIC,iBAAiB,EAAE;QACvFH,QAAQ,CAACgC,GAAG,CAAC,iBAAiB,EAAE/B,sBAAsB,CAAC;QACvDD,QAAQ,CAACgC,GAAG,CAAC,cAAc,EAAE9B,mBAAmB,CAAC;QACjDF,QAAQ,CAACgC,GAAG,CAAC,YAAY,EAAE7B,iBAAiB,CAAC;QAC7CH,QAAQ,CAACgC,GAAG,CAAC,gBAAgB,EAAE7B,iBAAiB,CAAC;QACjDF,sBAAsB,GAAGgC,SAAS;QAClC/B,mBAAmB,GAAG+B,SAAS;QAC/B9B,iBAAiB,GAAG8B,SAAS;MAC/B;MACA,IAAI,CAACzB,KAAK,GAAG,KAAK;IACpB,CAAC;IAED,MAAMkB,WAAWA,CAAA,EAAG;MAClB,MAAMQ,UAAU,GAAGnC,uBAAuB,CAACoC,aAAa,CAAC,CAAC;MAC1D;MACA,MAAMC,cAAc,GAAGF,UAAU,EAAEG,MAAM,EAAEzB,QAAQ;MACnD,IAAI,CAACwB,cAAc,EAAE,OAAO,EAAE;MAE9B,OAAOA,cAAc,CAClBtB,GAAG,CAAEwB,QAAgB,IAAK;QACzB,MAAMC,KAAK,GAAGD,QAAQ,CAACE,KAAK,CAAC,GAAG,CAAC;QAEjC,OAAOD,KAAK,CAACrB,MAAM,KAAK,CAAC,GAAGqB,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;MAC7C,CAAC,CAAC,CACDE,MAAM,CAAEC,QAAQ,IAAyB,CAAC,CAACA,QAAQ,CAAC,CACpD5B,GAAG,CAAE4B,QAAgB,IAAKpD,UAAU,CAACoD,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,MAAMb,UAAUA,CAAA,EAAG;MACjB,MAAMV,OAAO,GAAGpB,uBAAuB,CAAC8B,UAAU,CAAC,QAAQ,CAAC,EAAEW,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAE3E,IAAIrB,OAAO,EAAE,OAAOE,QAAQ,CAACF,OAAO,EAAE,EAAE,CAAC;;MAEzC;MACA,MAAMe,UAAU,GAAGnC,uBAAuB,CAACoC,aAAa,CAAC,CAAC;MAC1D;MACA,MAAMC,cAAc,GAAGF,UAAU,EAAEG,MAAM,EAAEzB,QAAQ;MACnD,IAAIwB,cAAc,IAAIA,cAAc,CAAClB,MAAM,GAAG,CAAC,EAAE;QAC/C,MAAMqB,KAAK,GAAGH,cAAc,CAAC,CAAC,CAAC,EAAEI,KAAK,CAAC,GAAG,CAAC;QAC3C,IAAID,KAAK,IAAIA,KAAK,CAACrB,MAAM,GAAG,CAAC,IAAI,OAAOqB,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;UAC7D,MAAMI,UAAU,GAAGtB,QAAQ,CAACkB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;UACzC,IAAI,CAACK,KAAK,CAACD,UAAU,CAAC,EAAE;YACtB,OAAOA,UAAU;UACnB;QACF;MACF;MACA,IAAIvC,MAAM,CAACyC,MAAM,IAAIzC,MAAM,CAACyC,MAAM,CAAC3B,MAAM,GAAG,CAAC,EAAE,OAAOd,MAAM,CAACyC,MAAM,CAAC,CAAC,CAAC,CAACxC,EAAE;MACzE,MAAM,IAAIsB,KAAK,CAAC,8BAA8B,CAAC;IACjD,CAAC;IAED,MAAMlB,WAAWA,CAAA,EAAG;MAClB,IAAI,CAACT,QAAQ,EAAE;QACbA,QAAQ,GAAGD,uBAAuB,CAACU,WAAW,CAAC,CAAC;MAClD;MAEA,OAAOT,QAAQ;IACjB,CAAC;IAED,MAAM8C,YAAYA,CAAA,EAAG;MACnB,IAAI;QACF,MAAMlC,QAAQ,GAAG,MAAM,IAAI,CAACc,WAAW,CAAC,CAAC;QAEzC,OAAO,CAAC,EAAEd,QAAQ,IAAIA,QAAQ,CAACM,MAAM,GAAG,CAAC,CAAC;MAC5C,CAAC,CAAC,MAAM;QACN,OAAO,KAAK;MACd;IACF,CAAC;IAED,MAAMY,WAAWA,CAAC;MAAEX;IAAQ,CAAC,EAAE;MAC7B,MAAMK,SAAS,GAAG,MAAM,IAAI,CAACf,WAAW,CAAC,CAAC;MAC1C,IAAI,CAACe,SAAS,EAAE,MAAM,IAAIG,KAAK,CAAC,6CAA6C,CAAC;MAC9E,MAAMoB,QAAQ,GAAG3C,MAAM,CAACyC,MAAM,CAACG,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC5C,EAAE,KAAKc,OAAO,CAAC;MAE1D,IAAI,CAAC4B,QAAQ,EAAE,MAAM,IAAIvD,gBAAgB,CAAC,IAAIE,uBAAuB,CAAC,CAAC,CAAC;MAExE,IAAI;QACF,MAAM8B,SAAS,CAAC0B,OAAO,CAAC;UACtBC,MAAM,EAAE,4BAA4B;UACpCC,MAAM,EAAE,CAAC;YAAEjC,OAAO,EAAE5B,WAAW,CAAC4B,OAAO;UAAE,CAAC;QAC5C,CAAC,CAAC;QAEFf,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,QAAQ,EAAE;UAAEE;QAAQ,CAAC,CAAC;QAE1C,OAAO4B,QAAQ;MACjB,CAAC,CAAC,OAAOzB,KAAK,EAAE;QACd;QACA;QACA,IAAKA,KAAK,EAAU+B,IAAI,KAAK,IAAI,IAAK/B,KAAK,EAAUgC,IAAI,EAAEC,aAAa,EAAEF,IAAI,KAAK,IAAI,EAAE;UACvF,IAAI;YACF,MAAM7B,SAAS,CAAC0B,OAAO,CAAC;cACtBC,MAAM,EAAE,yBAAyB;cACjCC,MAAM,EAAE,CACN;gBACEjC,OAAO,EAAE5B,WAAW,CAAC4B,OAAO,CAAC;gBAC7BqC,SAAS,EAAET,QAAQ,CAACzC,IAAI;gBACxBmD,cAAc,EAAEV,QAAQ,CAACU,cAAc;gBACvCC,OAAO,EAAE,CAACX,QAAQ,CAACW,OAAO,CAACC,OAAO,EAAEC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAE;gBACpDC,iBAAiB,EAAE,CAACd,QAAQ,CAACe,cAAc,EAAEH,OAAO,EAAEI,GAAG;cAC3D,CAAC;YAEL,CAAC,CAAC;YACF,MAAMhE,uBAAuB,CAACiE,aAAa,CAACnE,aAAa,CAACkD,QAAQ,CAAC,CAAC;YACpE3C,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,QAAQ,EAAE;cAAEE;YAAQ,CAAC,CAAC;YAE1C,OAAO4B,QAAQ;UACjB,CAAC,CAAC,OAAOkB,QAAQ,EAAE;YACjB,MAAM,IAAIxE,wBAAwB,CAACwE,QAAiB,CAAC;UACvD;QACF;QACA,MAAM,IAAIzE,gBAAgB,CAAC8B,KAAc,CAAC;MAC5C;IACF,CAAC;IAED4C,iBAAiBA,CAACtD,QAAkB,EAAE;MACpC,IAAIA,QAAQ,CAACM,MAAM,KAAK,CAAC,EAAE,IAAI,CAACiD,YAAY,CAAC,CAAC,CAAC,KAC1C/D,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,QAAQ,EAAE;QAAEL,QAAQ,EAAEA,QAAQ,CAACE,GAAG,CAACsD,CAAC,IAAI9E,UAAU,CAAC8E,CAAC,CAAC;MAAE,CAAC,CAAC;IACpF,CAAC;IAEDC,cAAcA,CAACC,KAAa,EAAE;MAC5B,MAAMnD,OAAO,GAAGoD,MAAM,CAACD,KAAK,CAAC;MAC7BlE,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,QAAQ,EAAE;QAAEE;MAAQ,CAAC,CAAC;IAC5C,CAAC;IAEDgD,YAAY,EAAEA,CAAA,KAAM;MAClB/D,MAAM,CAACY,OAAO,CAACC,IAAI,CAAC,YAAY,CAAC;IACnC;EACF,CAAC,CAAC,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"names":["getAddress","numberToHex","SwitchChainError","UserRejectedRequestError","ChainNotConfiguredError","createConnector","ProviderNotFoundError","UniversalConnector","appKitProvidedConnector","provider","accountsChanged","chainChanged","sessionDelete","disconnect","config","id","name","type","ready","getProvider","setup","_provider","catch","onSessionDelete","bind","on","connect","chainId","accountAddresses","getAccounts","length","Error","currentChainId","getChainId","switchChain","onAccountsChanged","onChainChanged","onDisconnect","accounts","error","emitter","emit","test","message","off","undefined","namespaces","getNamespaces","eip155Accounts","eip155","map","caipAddr","parts","split","filter","addrPart","parseInt","chainIdNum","isNaN","chains","isAuthorized","newChain","find","c","request","method","params","err","code","data","originalError","addEthereumChainParams","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","url","addError","shouldEmit","some","account","startsWith","x","chain","Number"],"sourceRoot":"../../../src","sources":["connectors/UniversalConnector.ts"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,9 @@
1
1
  import type { Provider, WalletConnector } from '@reown/appkit-common-react-native';
2
- export declare function UniversalConnector(appKitProvidedConnector: WalletConnector): import("wagmi").CreateConnectorFn<Provider, {
3
- ready: boolean;
4
- }, Record<string, unknown>>;
2
+ type Properties = {
3
+ onSessionDelete(data: {
4
+ topic: string;
5
+ }): void;
6
+ };
7
+ export declare function UniversalConnector(appKitProvidedConnector: WalletConnector): import("wagmi").CreateConnectorFn<Provider, Properties, Record<string, unknown>>;
8
+ export {};
5
9
  //# sourceMappingURL=UniversalConnector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalConnector.d.ts","sourceRoot":"","sources":["../../../src/connectors/UniversalConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAWnF,wBAAgB,kBAAkB,CAAC,uBAAuB,EAAE,eAAe;WAO/B,OAAO;4BAmMlD"}
1
+ {"version":3,"file":"UniversalConnector.d.ts","sourceRoot":"","sources":["../../../src/connectors/UniversalConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAqBnF,KAAK,UAAU,GAAG;IAChB,eAAe,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,uBAAuB,EAAE,eAAe,oFAuQ1E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reown/appkit-wagmi-react-native",
3
- "version": "2.0.0-alpha.3",
3
+ "version": "2.0.0-alpha.5",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "types": "lib/typescript/index.d.ts",
6
6
  "module": "lib/module/index.js",
@@ -31,18 +31,19 @@
31
31
  "repository": "https://github.com/reown-com/appkit-react-native",
32
32
  "author": "Reown (https://discord.gg/reown)",
33
33
  "homepage": "https://reown.com/appkit",
34
- "license": "Apache-2.0",
34
+ "license": "SEE LICENSE IN LICENSE.md",
35
35
  "bugs": {
36
36
  "url": "https://github.com/reown-com/appkit-react-native/issues"
37
37
  },
38
38
  "publishConfig": {
39
39
  "registry": "https://registry.npmjs.org/",
40
- "access": "public"
40
+ "access": "public",
41
+ "provenance": true
41
42
  },
42
43
  "dependencies": {
43
- "@reown/appkit-common-react-native": "2.0.0-alpha.3",
44
- "@reown/appkit-react-native": "2.0.0-alpha.3",
45
- "@reown/appkit-siwe-react-native": "2.0.0-alpha.3"
44
+ "@reown/appkit-common-react-native": "2.0.0-alpha.5",
45
+ "@reown/appkit-react-native": "2.0.0-alpha.5",
46
+ "@reown/appkit-siwe-react-native": "2.0.0-alpha.5"
46
47
  },
47
48
  "peerDependencies": {
48
49
  "@react-native-community/netinfo": "*",
@@ -1,58 +1,56 @@
1
1
  import type { Provider, WalletConnector } from '@reown/appkit-common-react-native';
2
+
2
3
  import {
3
4
  getAddress,
4
5
  numberToHex,
6
+ RpcError,
5
7
  SwitchChainError,
6
8
  UserRejectedRequestError,
7
9
  type Hex
8
10
  } from 'viem';
9
- import { ChainNotConfiguredError, createConnector, ProviderNotFoundError } from 'wagmi';
10
- import { formatNetwork } from '../utils/helpers';
11
+ import {
12
+ ChainNotConfiguredError,
13
+ createConnector,
14
+ ProviderNotFoundError,
15
+ type Connector
16
+ } from 'wagmi';
17
+
18
+ type UniversalConnector = Connector & {
19
+ onSessionDelete(data: { topic: string }): void;
20
+ };
21
+
22
+ type Properties = {
23
+ onSessionDelete(data: { topic: string }): void;
24
+ };
11
25
 
12
26
  export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
13
27
  let provider: Provider | undefined;
14
28
 
15
- let accountsChangedHandler: ((accounts: string[]) => void) | undefined;
16
- let chainChangedHandler: ((chainId: string | number) => void) | undefined;
17
- let disconnectHandler: ((error?: Error) => void) | undefined;
18
-
19
- type AppKitConnectorProperties = { ready: boolean };
29
+ let accountsChanged: UniversalConnector['onAccountsChanged'] | undefined;
30
+ let chainChanged: UniversalConnector['onChainChanged'] | undefined;
31
+ let sessionDelete: UniversalConnector['onSessionDelete'] | undefined;
32
+ let disconnect: UniversalConnector['onDisconnect'] | undefined;
20
33
 
21
- return createConnector<Provider, AppKitConnectorProperties>(config => ({
34
+ return createConnector<Provider, Properties>(config => ({
22
35
  id: 'walletconnect',
23
36
  name: 'WalletConnect',
24
37
  type: 'walletconnect' as const,
25
- ready: !!appKitProvidedConnector.getProvider(),
38
+ ready: !!appKitProvidedConnector.getProvider('eip155'),
26
39
 
27
40
  async setup() {
28
- provider = appKitProvidedConnector.getProvider();
29
- if (provider?.on) {
30
- accountsChangedHandler = (accounts: string[]) => {
31
- const hexAccounts = accounts.map(acc => getAddress(acc));
32
- config.emitter.emit('change', { accounts: hexAccounts });
33
- if (hexAccounts.length === 0) {
34
- config.emitter.emit('disconnect');
35
- }
36
- };
37
- chainChangedHandler = (chainId: string | number) => {
38
- const newChainId = typeof chainId === 'string' ? parseInt(chainId, 10) : chainId;
39
- config.emitter.emit('change', { chainId: newChainId });
40
- };
41
- disconnectHandler = (error?: Error) => {
42
- config.emitter.emit('disconnect');
43
- if (error) config.emitter.emit('error', { error });
44
- };
45
-
46
- if (accountsChangedHandler) provider.on('accountsChanged', accountsChangedHandler);
47
- if (chainChangedHandler) provider.on('chainChanged', chainChangedHandler);
48
- if (disconnectHandler) provider.on('disconnect', disconnectHandler);
49
- if (disconnectHandler) provider.on('session_delete', disconnectHandler);
41
+ const _provider = await this.getProvider().catch(() => null);
42
+ if (!_provider) {
43
+ return;
44
+ }
45
+ if (!sessionDelete) {
46
+ sessionDelete = this.onSessionDelete.bind(this);
47
+ _provider.on('session_delete', sessionDelete);
50
48
  }
51
49
  },
52
50
 
53
51
  async connect({ chainId } = {}) {
54
52
  try {
55
- const _provider = await this.getProvider();
53
+ const _provider = appKitProvidedConnector.getProvider('eip155');
56
54
  if (!_provider) throw new ProviderNotFoundError();
57
55
 
58
56
  // AppKit connector is already connected or handles its own connection.
@@ -71,8 +69,22 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
71
69
  await this.switchChain?.({ chainId });
72
70
  currentChainId = chainId;
73
71
  }
74
-
75
- this.ready = true;
72
+ if (!accountsChanged) {
73
+ accountsChanged = this.onAccountsChanged.bind(this);
74
+ _provider.on('accountsChanged', accountsChanged);
75
+ }
76
+ if (!chainChanged) {
77
+ chainChanged = this.onChainChanged.bind(this);
78
+ _provider.on('chainChanged', chainChanged);
79
+ }
80
+ if (!disconnect) {
81
+ disconnect = this.onDisconnect.bind(this);
82
+ _provider.on('disconnect', disconnect);
83
+ }
84
+ if (!sessionDelete) {
85
+ sessionDelete = this.onSessionDelete.bind(this);
86
+ _provider.on('session_delete', sessionDelete);
87
+ }
76
88
 
77
89
  return { accounts: accountAddresses, chainId: currentChainId };
78
90
  } catch (error) {
@@ -82,18 +94,32 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
82
94
  },
83
95
 
84
96
  async disconnect() {
85
- await appKitProvidedConnector.disconnect();
86
- config.emitter.emit('message', { type: 'externalDisconnect' });
87
- if (provider?.off && accountsChangedHandler && chainChangedHandler && disconnectHandler) {
88
- provider.off('accountsChanged', accountsChangedHandler);
89
- provider.off('chainChanged', chainChangedHandler);
90
- provider.off('disconnect', disconnectHandler);
91
- provider.off('session_delete', disconnectHandler);
92
- accountsChangedHandler = undefined;
93
- chainChangedHandler = undefined;
94
- disconnectHandler = undefined;
97
+ const _provider = await this.getProvider().catch(() => null);
98
+ try {
99
+ await appKitProvidedConnector.disconnect();
100
+ config.emitter.emit('message', { type: 'externalDisconnect' });
101
+ } catch (error) {
102
+ if (!/No matching key/i.test((error as Error).message)) {
103
+ throw error;
104
+ }
105
+ } finally {
106
+ if (chainChanged) {
107
+ _provider?.off('chainChanged', chainChanged);
108
+ chainChanged = undefined;
109
+ }
110
+ if (disconnect) {
111
+ _provider?.off('disconnect', disconnect);
112
+ disconnect = undefined;
113
+ }
114
+ if (accountsChanged) {
115
+ _provider?.off('accountsChanged', accountsChanged);
116
+ accountsChanged = undefined;
117
+ }
118
+ if (sessionDelete) {
119
+ _provider?.off('session_delete', sessionDelete);
120
+ sessionDelete = undefined;
121
+ }
95
122
  }
96
- this.ready = false;
97
123
  },
98
124
 
99
125
  async getAccounts() {
@@ -136,10 +162,10 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
136
162
 
137
163
  async getProvider() {
138
164
  if (!provider) {
139
- provider = appKitProvidedConnector.getProvider();
165
+ provider = appKitProvidedConnector.getProvider('eip155');
140
166
  }
141
167
 
142
- return provider as Provider;
168
+ return provider;
143
169
  },
144
170
 
145
171
  async isAuthorized() {
@@ -153,7 +179,7 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
153
179
  },
154
180
 
155
181
  async switchChain({ chainId }) {
156
- const _provider = await this.getProvider();
182
+ const _provider = appKitProvidedConnector.getProvider('eip155');
157
183
  if (!_provider) throw new Error('Provider not available for switching chain.');
158
184
  const newChain = config.chains.find(c => c.id === chainId);
159
185
 
@@ -165,28 +191,27 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
165
191
  params: [{ chainId: numberToHex(chainId) }]
166
192
  });
167
193
 
168
- config.emitter.emit('change', { chainId });
169
-
170
194
  return newChain;
171
- } catch (error) {
172
- // Try to add chain if switch failed (common pattern)
173
- //4902 in MetaMask: Unrecognized chain ID
195
+ } catch (err) {
196
+ const error = err as RpcError;
197
+
198
+ if (/(user rejected)/i.test(error.message)) throw new UserRejectedRequestError(error);
199
+
174
200
  if ((error as any)?.code === 4902 || (error as any)?.data?.originalError?.code === 4902) {
201
+ // Indicates chain is not added to provider
175
202
  try {
203
+ const addEthereumChainParams = {
204
+ chainId: numberToHex(chainId),
205
+ chainName: newChain.name,
206
+ nativeCurrency: newChain.nativeCurrency,
207
+ rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
208
+ blockExplorerUrls: [newChain.blockExplorers?.default?.url]
209
+ };
210
+
176
211
  await _provider.request({
177
212
  method: 'wallet_addEthereumChain',
178
- params: [
179
- {
180
- chainId: numberToHex(chainId),
181
- chainName: newChain.name,
182
- nativeCurrency: newChain.nativeCurrency,
183
- rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''], // Take first default HTTP RPC URL
184
- blockExplorerUrls: [newChain.blockExplorers?.default?.url]
185
- }
186
- ]
213
+ params: [addEthereumChainParams]
187
214
  });
188
- await appKitProvidedConnector.switchNetwork(formatNetwork(newChain));
189
- config.emitter.emit('change', { chainId });
190
215
 
191
216
  return newChain;
192
217
  } catch (addError) {
@@ -198,17 +223,67 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
198
223
  },
199
224
 
200
225
  onAccountsChanged(accounts: string[]) {
226
+ //Only emit if the account is an evm account
227
+ const shouldEmit = accounts.some(account => account.startsWith('0x'));
228
+
201
229
  if (accounts.length === 0) this.onDisconnect();
202
- else config.emitter.emit('change', { accounts: accounts.map(x => getAddress(x)) });
230
+ else if (shouldEmit)
231
+ config.emitter.emit('change', { accounts: accounts.map(x => getAddress(x)) });
203
232
  },
204
233
 
205
234
  onChainChanged(chain: string) {
206
235
  const chainId = Number(chain);
207
- config.emitter.emit('change', { chainId });
236
+
237
+ //Only emit if the chain is in the config (evm)
238
+ const shouldEmit = config.chains.some(c => c.id === chainId);
239
+ if (shouldEmit) {
240
+ config.emitter.emit('change', { chainId });
241
+ }
208
242
  },
209
243
 
210
- onDisconnect: () => {
244
+ async onDisconnect() {
211
245
  config.emitter.emit('disconnect');
246
+
247
+ try {
248
+ const _provider = await this.getProvider();
249
+
250
+ // Clean up event listeners
251
+ if (accountsChanged) {
252
+ _provider.off('accountsChanged', accountsChanged);
253
+ accountsChanged = undefined;
254
+ }
255
+ if (chainChanged) {
256
+ _provider.off('chainChanged', chainChanged);
257
+ chainChanged = undefined;
258
+ }
259
+ if (disconnect) {
260
+ _provider.off('disconnect', disconnect);
261
+ disconnect = undefined;
262
+ }
263
+ if (sessionDelete) {
264
+ _provider.off('session_delete', sessionDelete);
265
+ sessionDelete = undefined;
266
+ }
267
+ } catch (error) {
268
+ // If provider is not available, still clean up local references
269
+ // to prevent memory leaks
270
+ if (accountsChanged) {
271
+ accountsChanged = undefined;
272
+ }
273
+ if (chainChanged) {
274
+ chainChanged = undefined;
275
+ }
276
+ if (disconnect) {
277
+ disconnect = undefined;
278
+ }
279
+ if (sessionDelete) {
280
+ sessionDelete = undefined;
281
+ }
282
+ }
283
+ },
284
+
285
+ onSessionDelete() {
286
+ this.onDisconnect();
212
287
  }
213
288
  }));
214
289
  }