@reown/appkit-wagmi-react-native 2.0.0-alpha.6 → 2.0.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/lib/commonjs/adapter.js +25 -2
- package/lib/commonjs/adapter.js.map +1 -1
- package/lib/commonjs/connectors/UniversalConnector.js +30 -53
- package/lib/commonjs/connectors/UniversalConnector.js.map +1 -1
- package/lib/module/adapter.js +25 -2
- package/lib/module/adapter.js.map +1 -1
- package/lib/module/connectors/UniversalConnector.js +30 -53
- package/lib/module/connectors/UniversalConnector.js.map +1 -1
- package/lib/typescript/adapter.d.ts +2 -0
- package/lib/typescript/adapter.d.ts.map +1 -1
- package/lib/typescript/connectors/UniversalConnector.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/adapter.ts +32 -2
- package/src/connectors/UniversalConnector.ts +28 -52
package/lib/commonjs/adapter.js
CHANGED
|
@@ -95,6 +95,10 @@ class WagmiAdapter extends _appkitCommonReactNative.EVMAdapter {
|
|
|
95
95
|
return accountsForNamespace?.accounts;
|
|
96
96
|
}
|
|
97
97
|
async disconnect() {
|
|
98
|
+
if (this.unsubscribeWatchAccount) {
|
|
99
|
+
this.unsubscribeWatchAccount();
|
|
100
|
+
this.unsubscribeWatchAccount = undefined;
|
|
101
|
+
}
|
|
98
102
|
if (this.wagmiConfigConnector) {
|
|
99
103
|
await (0, _core.disconnect)(this.wagmiConfig, {
|
|
100
104
|
connector: this.wagmiConfigConnector
|
|
@@ -112,6 +116,12 @@ class WagmiAdapter extends _appkitCommonReactNative.EVMAdapter {
|
|
|
112
116
|
getSupportedNamespace() {
|
|
113
117
|
return WagmiAdapter.supportedNamespace;
|
|
114
118
|
}
|
|
119
|
+
|
|
120
|
+
// Override subscribeToEvents to prevent double subscription
|
|
121
|
+
// Wagmi handles provider events through its connector system and watchAccount
|
|
122
|
+
subscribeToEvents() {
|
|
123
|
+
// Do nothing - wagmi's watchAccount in setupWatchers handles all events
|
|
124
|
+
}
|
|
115
125
|
init({
|
|
116
126
|
connector: _connector
|
|
117
127
|
}) {
|
|
@@ -144,12 +154,25 @@ class WagmiAdapter extends _appkitCommonReactNative.EVMAdapter {
|
|
|
144
154
|
this.setupWatchers();
|
|
145
155
|
}
|
|
146
156
|
setupWatchers() {
|
|
147
|
-
|
|
157
|
+
// Clean up existing subscription if any
|
|
158
|
+
this.unsubscribeWatchAccount?.();
|
|
159
|
+
this.unsubscribeWatchAccount = (0, _core.watchAccount)(this.wagmiConfig, {
|
|
148
160
|
onChange: (accountData, prevAccountData) => {
|
|
161
|
+
if (!this.connector) return;
|
|
162
|
+
|
|
163
|
+
// Handle disconnect
|
|
149
164
|
if (accountData.status === 'disconnected' && prevAccountData.address) {
|
|
150
165
|
this.onDisconnect();
|
|
166
|
+
return;
|
|
151
167
|
}
|
|
152
|
-
|
|
168
|
+
|
|
169
|
+
// Handle account address changes
|
|
170
|
+
if (accountData?.addresses && accountData?.address && accountData.address !== prevAccountData?.address) {
|
|
171
|
+
this.onAccountsChanged([...accountData.addresses]);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Handle chain changes
|
|
175
|
+
if (accountData?.chainId && accountData.chainId !== prevAccountData?.chainId) {
|
|
153
176
|
this.onChainChanged(accountData.chainId?.toString());
|
|
154
177
|
}
|
|
155
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_appkitCommonReactNative","require","_core","_helpers","_viem","_UniversalConnector","WagmiAdapter","EVMAdapter","supportedNamespace","constructor","configParams","adapterType","wagmiChains","networks","wagmiConfig","createWagmiInternalConfig","initialConnectors","transportsArr","map","chain","id","getTransport","chainId","projectId","transports","Object","fromEntries","createConfig","chains","connectors","multiInjectedProviderDiscovery","switchNetwork","network","wagmiConfigConnector","Error","switchChainWagmi","connector","getBalance","params","address","tokens","balanceAddress","getAccounts","find","acc","includes","toString","Promise","resolve","amount","symbol","nativeCurrency","accountHex","split","token","caipNetworkId","balance","getBalanceWagmi","formattedBalance","formatUnits","value","decimals","undefined","emit","namespaces","getNamespaces","supportedNamespaceKey","getSupportedNamespace","accountsForNamespace","accounts","disconnect","disconnectWagmiCore","onDisconnect","evmAdapterInstance","init","_connector","connectorInstance","_internal","setup","UniversalConnector","setState","prev","emitter","on","type","connectWagmi","error","setupWatchers","watchAccount","onChange","accountData","prevAccountData","status","onChainChanged","exports"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AASA,IAAAC,KAAA,GAAAD,OAAA;AAYA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAQO,MAAMK,YAAY,SAASC,mCAAU,CAAC;EAC3C,OAAeC,kBAAkB,GAAmB,QAAQ;
|
|
1
|
+
{"version":3,"names":["_appkitCommonReactNative","require","_core","_helpers","_viem","_UniversalConnector","WagmiAdapter","EVMAdapter","supportedNamespace","constructor","configParams","adapterType","wagmiChains","networks","wagmiConfig","createWagmiInternalConfig","initialConnectors","transportsArr","map","chain","id","getTransport","chainId","projectId","transports","Object","fromEntries","createConfig","chains","connectors","multiInjectedProviderDiscovery","switchNetwork","network","wagmiConfigConnector","Error","switchChainWagmi","connector","getBalance","params","address","tokens","balanceAddress","getAccounts","find","acc","includes","toString","Promise","resolve","amount","symbol","nativeCurrency","accountHex","split","token","caipNetworkId","balance","getBalanceWagmi","formattedBalance","formatUnits","value","decimals","undefined","emit","namespaces","getNamespaces","supportedNamespaceKey","getSupportedNamespace","accountsForNamespace","accounts","disconnect","unsubscribeWatchAccount","disconnectWagmiCore","onDisconnect","evmAdapterInstance","subscribeToEvents","init","_connector","connectorInstance","_internal","setup","UniversalConnector","setState","prev","emitter","on","type","connectWagmi","error","setupWatchers","watchAccount","onChange","accountData","prevAccountData","status","addresses","onAccountsChanged","onChainChanged","exports"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,24 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
12
12
|
let chainChanged;
|
|
13
13
|
let sessionDelete;
|
|
14
14
|
let disconnect;
|
|
15
|
+
function cleanupEventListeners(_provider) {
|
|
16
|
+
if (accountsChanged) {
|
|
17
|
+
_provider?.off('accountsChanged', accountsChanged);
|
|
18
|
+
accountsChanged = undefined;
|
|
19
|
+
}
|
|
20
|
+
if (chainChanged) {
|
|
21
|
+
_provider?.off('chainChanged', chainChanged);
|
|
22
|
+
chainChanged = undefined;
|
|
23
|
+
}
|
|
24
|
+
if (disconnect) {
|
|
25
|
+
_provider?.off('disconnect', disconnect);
|
|
26
|
+
disconnect = undefined;
|
|
27
|
+
}
|
|
28
|
+
if (sessionDelete) {
|
|
29
|
+
_provider?.off('session_delete', sessionDelete);
|
|
30
|
+
sessionDelete = undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
15
33
|
return (0, _wagmi.createConnector)(config => ({
|
|
16
34
|
id: 'walletconnect',
|
|
17
35
|
name: 'WalletConnect',
|
|
@@ -86,28 +104,12 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
86
104
|
throw error;
|
|
87
105
|
}
|
|
88
106
|
} finally {
|
|
89
|
-
|
|
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
|
-
}
|
|
107
|
+
cleanupEventListeners(_provider);
|
|
105
108
|
}
|
|
106
109
|
},
|
|
107
110
|
async getAccounts() {
|
|
108
111
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
109
|
-
|
|
110
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
112
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts;
|
|
111
113
|
if (!eip155Accounts) return [];
|
|
112
114
|
return eip155Accounts.map(caipAddr => {
|
|
113
115
|
const parts = caipAddr.split(':');
|
|
@@ -120,8 +122,7 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
120
122
|
|
|
121
123
|
// Fallback: Try to get from CAIP accounts if available
|
|
122
124
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
123
|
-
|
|
124
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
125
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts;
|
|
125
126
|
if (eip155Accounts && eip155Accounts.length > 0) {
|
|
126
127
|
const parts = eip155Accounts[0]?.split(':');
|
|
127
128
|
if (parts && parts.length > 1 && typeof parts[1] === 'string') {
|
|
@@ -191,9 +192,13 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
191
192
|
onAccountsChanged(accounts) {
|
|
192
193
|
//Only emit if the account is an evm account
|
|
193
194
|
const shouldEmit = accounts.some(account => account.startsWith('0x'));
|
|
194
|
-
if (accounts.length === 0)
|
|
195
|
-
|
|
196
|
-
})
|
|
195
|
+
if (accounts.length === 0) {
|
|
196
|
+
this.onDisconnect();
|
|
197
|
+
} else if (shouldEmit) {
|
|
198
|
+
config.emitter.emit('change', {
|
|
199
|
+
accounts: accounts.map(x => (0, _viem.getAddress)(x))
|
|
200
|
+
});
|
|
201
|
+
}
|
|
197
202
|
},
|
|
198
203
|
onChainChanged(chain) {
|
|
199
204
|
const chainId = Number(chain);
|
|
@@ -210,39 +215,11 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
210
215
|
config.emitter.emit('disconnect');
|
|
211
216
|
try {
|
|
212
217
|
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
|
-
}
|
|
218
|
+
cleanupEventListeners(_provider);
|
|
231
219
|
} catch (error) {
|
|
232
220
|
// If provider is not available, still clean up local references
|
|
233
221
|
// to prevent memory leaks
|
|
234
|
-
|
|
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
|
-
}
|
|
222
|
+
cleanupEventListeners(null);
|
|
246
223
|
}
|
|
247
224
|
},
|
|
248
225
|
onSessionDelete() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_viem","require","_wagmi","UniversalConnector","appKitProvidedConnector","provider","accountsChanged","chainChanged","sessionDelete","disconnect","createConnector","config","id","name","type","ready","getProvider","setup","
|
|
1
|
+
{"version":3,"names":["_viem","require","_wagmi","UniversalConnector","appKitProvidedConnector","provider","accountsChanged","chainChanged","sessionDelete","disconnect","cleanupEventListeners","_provider","off","undefined","createConnector","config","id","name","type","ready","getProvider","setup","catch","onSessionDelete","bind","on","connect","chainId","ProviderNotFoundError","accountAddresses","getAccounts","length","UserRejectedRequestError","Error","currentChainId","getChainId","switchChain","onAccountsChanged","onChainChanged","onDisconnect","accounts","error","emitter","emit","test","message","namespaces","getNamespaces","eip155Accounts","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":[]}
|
package/lib/module/adapter.js
CHANGED
|
@@ -91,6 +91,10 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
91
91
|
return accountsForNamespace?.accounts;
|
|
92
92
|
}
|
|
93
93
|
async disconnect() {
|
|
94
|
+
if (this.unsubscribeWatchAccount) {
|
|
95
|
+
this.unsubscribeWatchAccount();
|
|
96
|
+
this.unsubscribeWatchAccount = undefined;
|
|
97
|
+
}
|
|
94
98
|
if (this.wagmiConfigConnector) {
|
|
95
99
|
await disconnectWagmiCore(this.wagmiConfig, {
|
|
96
100
|
connector: this.wagmiConfigConnector
|
|
@@ -108,6 +112,12 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
108
112
|
getSupportedNamespace() {
|
|
109
113
|
return WagmiAdapter.supportedNamespace;
|
|
110
114
|
}
|
|
115
|
+
|
|
116
|
+
// Override subscribeToEvents to prevent double subscription
|
|
117
|
+
// Wagmi handles provider events through its connector system and watchAccount
|
|
118
|
+
subscribeToEvents() {
|
|
119
|
+
// Do nothing - wagmi's watchAccount in setupWatchers handles all events
|
|
120
|
+
}
|
|
111
121
|
init({
|
|
112
122
|
connector: _connector
|
|
113
123
|
}) {
|
|
@@ -140,12 +150,25 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
140
150
|
this.setupWatchers();
|
|
141
151
|
}
|
|
142
152
|
setupWatchers() {
|
|
143
|
-
|
|
153
|
+
// Clean up existing subscription if any
|
|
154
|
+
this.unsubscribeWatchAccount?.();
|
|
155
|
+
this.unsubscribeWatchAccount = watchAccount(this.wagmiConfig, {
|
|
144
156
|
onChange: (accountData, prevAccountData) => {
|
|
157
|
+
if (!this.connector) return;
|
|
158
|
+
|
|
159
|
+
// Handle disconnect
|
|
145
160
|
if (accountData.status === 'disconnected' && prevAccountData.address) {
|
|
146
161
|
this.onDisconnect();
|
|
162
|
+
return;
|
|
147
163
|
}
|
|
148
|
-
|
|
164
|
+
|
|
165
|
+
// Handle account address changes
|
|
166
|
+
if (accountData?.addresses && accountData?.address && accountData.address !== prevAccountData?.address) {
|
|
167
|
+
this.onAccountsChanged([...accountData.addresses]);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Handle chain changes
|
|
171
|
+
if (accountData?.chainId && accountData.chainId !== prevAccountData?.chainId) {
|
|
149
172
|
this.onChainChanged(accountData.chainId?.toString());
|
|
150
173
|
}
|
|
151
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EVMAdapter","createConfig","getBalance","getBalanceWagmi","switchChain","switchChainWagmi","disconnect","disconnectWagmiCore","connect","connectWagmi","watchAccount","getTransport","formatUnits","UniversalConnector","WagmiAdapter","supportedNamespace","constructor","configParams","adapterType","wagmiChains","networks","wagmiConfig","createWagmiInternalConfig","initialConnectors","transportsArr","map","chain","id","chainId","projectId","transports","Object","fromEntries","chains","connectors","multiInjectedProviderDiscovery","switchNetwork","network","wagmiConfigConnector","Error","connector","params","address","tokens","balanceAddress","getAccounts","find","acc","includes","toString","Promise","resolve","amount","symbol","nativeCurrency","accountHex","split","token","caipNetworkId","balance","formattedBalance","value","decimals","undefined","emit","namespaces","getNamespaces","supportedNamespaceKey","getSupportedNamespace","accountsForNamespace","accounts","onDisconnect","evmAdapterInstance","init","_connector","connectorInstance","_internal","setup","setState","prev","emitter","on","type","error","setupWatchers","onChange","accountData","prevAccountData","status","onChainChanged"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":";;AAAA,SACEA,UAAU,QAOL,mCAAmC;AAC1C,SAGEC,YAAY,EACZC,UAAU,IAAIC,eAAe,EAC7BC,WAAW,IAAIC,gBAAgB,EAC/BC,UAAU,IAAIC,mBAAmB,EACjCC,OAAO,IAAIC,YAAY,EAEvBC,YAAY,QACP,aAAa;AAEpB,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,WAAW,QAAkB,MAAM;AAC5C,SAASC,kBAAkB,QAAQ,iCAAiC;AAQpE,OAAO,MAAMC,YAAY,SAASd,UAAU,CAAC;EAC3C,OAAee,kBAAkB,GAAmB,QAAQ;
|
|
1
|
+
{"version":3,"names":["EVMAdapter","createConfig","getBalance","getBalanceWagmi","switchChain","switchChainWagmi","disconnect","disconnectWagmiCore","connect","connectWagmi","watchAccount","getTransport","formatUnits","UniversalConnector","WagmiAdapter","supportedNamespace","constructor","configParams","adapterType","wagmiChains","networks","wagmiConfig","createWagmiInternalConfig","initialConnectors","transportsArr","map","chain","id","chainId","projectId","transports","Object","fromEntries","chains","connectors","multiInjectedProviderDiscovery","switchNetwork","network","wagmiConfigConnector","Error","connector","params","address","tokens","balanceAddress","getAccounts","find","acc","includes","toString","Promise","resolve","amount","symbol","nativeCurrency","accountHex","split","token","caipNetworkId","balance","formattedBalance","value","decimals","undefined","emit","namespaces","getNamespaces","supportedNamespaceKey","getSupportedNamespace","accountsForNamespace","accounts","unsubscribeWatchAccount","onDisconnect","evmAdapterInstance","subscribeToEvents","init","_connector","connectorInstance","_internal","setup","setState","prev","emitter","on","type","error","setupWatchers","onChange","accountData","prevAccountData","status","addresses","onAccountsChanged","onChainChanged"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,6 +8,24 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
8
8
|
let chainChanged;
|
|
9
9
|
let sessionDelete;
|
|
10
10
|
let disconnect;
|
|
11
|
+
function cleanupEventListeners(_provider) {
|
|
12
|
+
if (accountsChanged) {
|
|
13
|
+
_provider?.off('accountsChanged', accountsChanged);
|
|
14
|
+
accountsChanged = undefined;
|
|
15
|
+
}
|
|
16
|
+
if (chainChanged) {
|
|
17
|
+
_provider?.off('chainChanged', chainChanged);
|
|
18
|
+
chainChanged = undefined;
|
|
19
|
+
}
|
|
20
|
+
if (disconnect) {
|
|
21
|
+
_provider?.off('disconnect', disconnect);
|
|
22
|
+
disconnect = undefined;
|
|
23
|
+
}
|
|
24
|
+
if (sessionDelete) {
|
|
25
|
+
_provider?.off('session_delete', sessionDelete);
|
|
26
|
+
sessionDelete = undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
11
29
|
return createConnector(config => ({
|
|
12
30
|
id: 'walletconnect',
|
|
13
31
|
name: 'WalletConnect',
|
|
@@ -82,28 +100,12 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
82
100
|
throw error;
|
|
83
101
|
}
|
|
84
102
|
} finally {
|
|
85
|
-
|
|
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
|
-
}
|
|
103
|
+
cleanupEventListeners(_provider);
|
|
101
104
|
}
|
|
102
105
|
},
|
|
103
106
|
async getAccounts() {
|
|
104
107
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
105
|
-
|
|
106
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
108
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts;
|
|
107
109
|
if (!eip155Accounts) return [];
|
|
108
110
|
return eip155Accounts.map(caipAddr => {
|
|
109
111
|
const parts = caipAddr.split(':');
|
|
@@ -116,8 +118,7 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
116
118
|
|
|
117
119
|
// Fallback: Try to get from CAIP accounts if available
|
|
118
120
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
119
|
-
|
|
120
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
121
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts;
|
|
121
122
|
if (eip155Accounts && eip155Accounts.length > 0) {
|
|
122
123
|
const parts = eip155Accounts[0]?.split(':');
|
|
123
124
|
if (parts && parts.length > 1 && typeof parts[1] === 'string') {
|
|
@@ -187,9 +188,13 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
187
188
|
onAccountsChanged(accounts) {
|
|
188
189
|
//Only emit if the account is an evm account
|
|
189
190
|
const shouldEmit = accounts.some(account => account.startsWith('0x'));
|
|
190
|
-
if (accounts.length === 0)
|
|
191
|
-
|
|
192
|
-
})
|
|
191
|
+
if (accounts.length === 0) {
|
|
192
|
+
this.onDisconnect();
|
|
193
|
+
} else if (shouldEmit) {
|
|
194
|
+
config.emitter.emit('change', {
|
|
195
|
+
accounts: accounts.map(x => getAddress(x))
|
|
196
|
+
});
|
|
197
|
+
}
|
|
193
198
|
},
|
|
194
199
|
onChainChanged(chain) {
|
|
195
200
|
const chainId = Number(chain);
|
|
@@ -206,39 +211,11 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
206
211
|
config.emitter.emit('disconnect');
|
|
207
212
|
try {
|
|
208
213
|
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
|
-
}
|
|
214
|
+
cleanupEventListeners(_provider);
|
|
227
215
|
} catch (error) {
|
|
228
216
|
// If provider is not available, still clean up local references
|
|
229
217
|
// to prevent memory leaks
|
|
230
|
-
|
|
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
|
-
}
|
|
218
|
+
cleanupEventListeners(null);
|
|
242
219
|
}
|
|
243
220
|
},
|
|
244
221
|
onSessionDelete() {
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
1
|
+
{"version":3,"names":["getAddress","numberToHex","SwitchChainError","UserRejectedRequestError","ChainNotConfiguredError","createConnector","ProviderNotFoundError","UniversalConnector","appKitProvidedConnector","provider","accountsChanged","chainChanged","sessionDelete","disconnect","cleanupEventListeners","_provider","off","undefined","config","id","name","type","ready","getProvider","setup","catch","onSessionDelete","bind","on","connect","chainId","accountAddresses","getAccounts","length","Error","currentChainId","getChainId","switchChain","onAccountsChanged","onChainChanged","onDisconnect","accounts","error","emitter","emit","test","message","namespaces","getNamespaces","eip155Accounts","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":[]}
|
|
@@ -11,6 +11,7 @@ export declare class WagmiAdapter extends EVMAdapter {
|
|
|
11
11
|
wagmiChains: readonly Chain[] | undefined;
|
|
12
12
|
wagmiConfig: Config;
|
|
13
13
|
private wagmiConfigConnector?;
|
|
14
|
+
private unsubscribeWatchAccount?;
|
|
14
15
|
constructor(configParams: ConfigParams);
|
|
15
16
|
private createWagmiInternalConfig;
|
|
16
17
|
switchNetwork(network: AppKitNetwork): Promise<void>;
|
|
@@ -18,6 +19,7 @@ export declare class WagmiAdapter extends EVMAdapter {
|
|
|
18
19
|
getAccounts(): CaipAddress[] | undefined;
|
|
19
20
|
disconnect(): Promise<void>;
|
|
20
21
|
getSupportedNamespace(): ChainNamespace;
|
|
22
|
+
subscribeToEvents(): void;
|
|
21
23
|
init({ connector: _connector }: BlockchainAdapterInitParams): void;
|
|
22
24
|
setupWatchers(): void;
|
|
23
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,2BAA2B,EAChC,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,sBAAsB,EAM3B,KAAK,SAAS,EAEf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAK1C,KAAK,YAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG;IACpD,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B,CAAC;AAEF,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA4B;IACtD,WAAW,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,CAAC;IAC1C,WAAW,EAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAY;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,2BAA2B,EAChC,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,sBAAsB,EAM3B,KAAK,SAAS,EAEf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAK1C,KAAK,YAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG;IACpD,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B,CAAC;AAEF,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA4B;IACtD,WAAW,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,CAAC;IAC1C,WAAW,EAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAY;IACzC,OAAO,CAAC,uBAAuB,CAAC,CAAa;gBAEjC,YAAY,EAAE,YAAY;IAStC,OAAO,CAAC,yBAAyB;IAoB3B,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAuCvE,WAAW,IAAI,WAAW,EAAE,GAAG,SAAS;IAgBlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC,qBAAqB,IAAI,cAAc;IAM9B,iBAAiB,IAAI,IAAI;IAIzB,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,2BAA2B,GAAG,IAAI;IAgC3E,aAAa;CA+Bd"}
|
|
@@ -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;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,
|
|
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,oFA+O1E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reown/appkit-wagmi-react-native",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"types": "lib/typescript/index.d.ts",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"provenance": true
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@reown/appkit-common-react-native": "2.0.
|
|
45
|
-
"@reown/appkit-react-native": "2.0.
|
|
44
|
+
"@reown/appkit-common-react-native": "2.0.1",
|
|
45
|
+
"@reown/appkit-react-native": "2.0.1"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"@react-native-community/netinfo": "*",
|
package/src/adapter.ts
CHANGED
|
@@ -34,6 +34,7 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
34
34
|
public wagmiChains: readonly Chain[] | undefined;
|
|
35
35
|
public wagmiConfig!: Config;
|
|
36
36
|
private wagmiConfigConnector?: Connector;
|
|
37
|
+
private unsubscribeWatchAccount?: () => void;
|
|
37
38
|
|
|
38
39
|
constructor(configParams: ConfigParams) {
|
|
39
40
|
super({
|
|
@@ -131,6 +132,11 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
131
132
|
}
|
|
132
133
|
|
|
133
134
|
async disconnect(): Promise<void> {
|
|
135
|
+
if (this.unsubscribeWatchAccount) {
|
|
136
|
+
this.unsubscribeWatchAccount();
|
|
137
|
+
this.unsubscribeWatchAccount = undefined;
|
|
138
|
+
}
|
|
139
|
+
|
|
134
140
|
if (this.wagmiConfigConnector) {
|
|
135
141
|
await disconnectWagmiCore(this.wagmiConfig, { connector: this.wagmiConfigConnector });
|
|
136
142
|
this.wagmiConfigConnector = undefined;
|
|
@@ -149,6 +155,12 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
149
155
|
return WagmiAdapter.supportedNamespace;
|
|
150
156
|
}
|
|
151
157
|
|
|
158
|
+
// Override subscribeToEvents to prevent double subscription
|
|
159
|
+
// Wagmi handles provider events through its connector system and watchAccount
|
|
160
|
+
override subscribeToEvents(): void {
|
|
161
|
+
// Do nothing - wagmi's watchAccount in setupWatchers handles all events
|
|
162
|
+
}
|
|
163
|
+
|
|
152
164
|
override init({ connector: _connector }: BlockchainAdapterInitParams): void {
|
|
153
165
|
super.init({ connector: _connector });
|
|
154
166
|
|
|
@@ -182,13 +194,31 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
182
194
|
}
|
|
183
195
|
|
|
184
196
|
setupWatchers() {
|
|
185
|
-
|
|
197
|
+
// Clean up existing subscription if any
|
|
198
|
+
this.unsubscribeWatchAccount?.();
|
|
199
|
+
|
|
200
|
+
this.unsubscribeWatchAccount = watchAccount(this.wagmiConfig, {
|
|
186
201
|
onChange: (accountData, prevAccountData) => {
|
|
202
|
+
if (!this.connector) return;
|
|
203
|
+
|
|
204
|
+
// Handle disconnect
|
|
187
205
|
if (accountData.status === 'disconnected' && prevAccountData.address) {
|
|
188
206
|
this.onDisconnect();
|
|
207
|
+
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Handle account address changes
|
|
212
|
+
if (
|
|
213
|
+
accountData?.addresses &&
|
|
214
|
+
accountData?.address &&
|
|
215
|
+
accountData.address !== prevAccountData?.address
|
|
216
|
+
) {
|
|
217
|
+
this.onAccountsChanged([...accountData.addresses]);
|
|
189
218
|
}
|
|
190
219
|
|
|
191
|
-
|
|
220
|
+
// Handle chain changes
|
|
221
|
+
if (accountData?.chainId && accountData.chainId !== prevAccountData?.chainId) {
|
|
192
222
|
this.onChainChanged(accountData.chainId?.toString());
|
|
193
223
|
}
|
|
194
224
|
}
|
|
@@ -31,6 +31,25 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
31
31
|
let sessionDelete: UniversalConnector['onSessionDelete'] | undefined;
|
|
32
32
|
let disconnect: UniversalConnector['onDisconnect'] | undefined;
|
|
33
33
|
|
|
34
|
+
function cleanupEventListeners(_provider?: Provider | null) {
|
|
35
|
+
if (accountsChanged) {
|
|
36
|
+
_provider?.off('accountsChanged', accountsChanged);
|
|
37
|
+
accountsChanged = undefined;
|
|
38
|
+
}
|
|
39
|
+
if (chainChanged) {
|
|
40
|
+
_provider?.off('chainChanged', chainChanged);
|
|
41
|
+
chainChanged = undefined;
|
|
42
|
+
}
|
|
43
|
+
if (disconnect) {
|
|
44
|
+
_provider?.off('disconnect', disconnect);
|
|
45
|
+
disconnect = undefined;
|
|
46
|
+
}
|
|
47
|
+
if (sessionDelete) {
|
|
48
|
+
_provider?.off('session_delete', sessionDelete);
|
|
49
|
+
sessionDelete = undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
34
53
|
return createConnector<Provider, Properties>(config => ({
|
|
35
54
|
id: 'walletconnect',
|
|
36
55
|
name: 'WalletConnect',
|
|
@@ -103,29 +122,13 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
103
122
|
throw error;
|
|
104
123
|
}
|
|
105
124
|
} finally {
|
|
106
|
-
|
|
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
|
-
}
|
|
125
|
+
cleanupEventListeners(_provider);
|
|
122
126
|
}
|
|
123
127
|
},
|
|
124
128
|
|
|
125
129
|
async getAccounts() {
|
|
126
130
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
127
|
-
|
|
128
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
131
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts as string[] | undefined;
|
|
129
132
|
if (!eip155Accounts) return [] as readonly Hex[];
|
|
130
133
|
|
|
131
134
|
return eip155Accounts
|
|
@@ -145,8 +148,7 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
145
148
|
|
|
146
149
|
// Fallback: Try to get from CAIP accounts if available
|
|
147
150
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
148
|
-
|
|
149
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
151
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts as string[] | undefined;
|
|
150
152
|
if (eip155Accounts && eip155Accounts.length > 0) {
|
|
151
153
|
const parts = eip155Accounts[0]?.split(':');
|
|
152
154
|
if (parts && parts.length > 1 && typeof parts[1] === 'string') {
|
|
@@ -226,9 +228,11 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
226
228
|
//Only emit if the account is an evm account
|
|
227
229
|
const shouldEmit = accounts.some(account => account.startsWith('0x'));
|
|
228
230
|
|
|
229
|
-
if (accounts.length === 0)
|
|
230
|
-
|
|
231
|
+
if (accounts.length === 0) {
|
|
232
|
+
this.onDisconnect();
|
|
233
|
+
} else if (shouldEmit) {
|
|
231
234
|
config.emitter.emit('change', { accounts: accounts.map(x => getAddress(x)) });
|
|
235
|
+
}
|
|
232
236
|
},
|
|
233
237
|
|
|
234
238
|
onChainChanged(chain: string) {
|
|
@@ -246,39 +250,11 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
246
250
|
|
|
247
251
|
try {
|
|
248
252
|
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
|
-
}
|
|
253
|
+
cleanupEventListeners(_provider);
|
|
267
254
|
} catch (error) {
|
|
268
255
|
// If provider is not available, still clean up local references
|
|
269
256
|
// to prevent memory leaks
|
|
270
|
-
|
|
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
|
-
}
|
|
257
|
+
cleanupEventListeners(null);
|
|
282
258
|
}
|
|
283
259
|
},
|
|
284
260
|
|