@reown/appkit-wagmi-react-native 0.0.0-chore-solflare-20250730210452 → 0.0.0-chore-spring-effect-20250909214820
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 +19 -3
- package/lib/commonjs/adapter.js.map +1 -1
- package/lib/commonjs/connectors/UniversalConnector.js +122 -82
- package/lib/commonjs/connectors/UniversalConnector.js.map +1 -1
- package/lib/module/adapter.js +20 -4
- package/lib/module/adapter.js.map +1 -1
- package/lib/module/connectors/UniversalConnector.js +122 -82
- package/lib/module/connectors/UniversalConnector.js.map +1 -1
- package/lib/typescript/adapter.d.ts +3 -2
- package/lib/typescript/adapter.d.ts.map +1 -1
- package/lib/typescript/connectors/UniversalConnector.d.ts +7 -3
- package/lib/typescript/connectors/UniversalConnector.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/adapter.ts +21 -5
- package/src/connectors/UniversalConnector.ts +143 -82
package/lib/commonjs/adapter.js
CHANGED
|
@@ -13,7 +13,6 @@ class WagmiAdapter extends _appkitCommonReactNative.EVMAdapter {
|
|
|
13
13
|
static supportedNamespace = 'eip155';
|
|
14
14
|
constructor(configParams) {
|
|
15
15
|
super({
|
|
16
|
-
projectId: configParams.projectId,
|
|
17
16
|
supportedNamespace: WagmiAdapter.supportedNamespace,
|
|
18
17
|
adapterType: 'wagmi'
|
|
19
18
|
});
|
|
@@ -113,8 +112,12 @@ class WagmiAdapter extends _appkitCommonReactNative.EVMAdapter {
|
|
|
113
112
|
getSupportedNamespace() {
|
|
114
113
|
return WagmiAdapter.supportedNamespace;
|
|
115
114
|
}
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
init({
|
|
116
|
+
connector: _connector
|
|
117
|
+
}) {
|
|
118
|
+
super.init({
|
|
119
|
+
connector: _connector
|
|
120
|
+
});
|
|
118
121
|
if (_connector && this.wagmiChains) {
|
|
119
122
|
if (!this.wagmiConfigConnector) {
|
|
120
123
|
// Manually add the connector to the wagmiConfig
|
|
@@ -138,6 +141,19 @@ class WagmiAdapter extends _appkitCommonReactNative.EVMAdapter {
|
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
}
|
|
144
|
+
this.setupWatchers();
|
|
145
|
+
}
|
|
146
|
+
setupWatchers() {
|
|
147
|
+
(0, _core.watchAccount)(this.wagmiConfig, {
|
|
148
|
+
onChange: (accountData, prevAccountData) => {
|
|
149
|
+
if (accountData.status === 'disconnected' && prevAccountData.address) {
|
|
150
|
+
this.onDisconnect();
|
|
151
|
+
}
|
|
152
|
+
if (accountData?.chainId && accountData?.chainId !== prevAccountData?.chainId) {
|
|
153
|
+
this.onChainChanged(accountData.chainId?.toString());
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
});
|
|
141
157
|
}
|
|
142
158
|
}
|
|
143
159
|
exports.WagmiAdapter = WagmiAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_appkitCommonReactNative","require","_core","_helpers","_viem","_UniversalConnector","WagmiAdapter","EVMAdapter","supportedNamespace","constructor","configParams","
|
|
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":"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","ignoreList":[]}
|
|
@@ -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
|
|
13
|
-
let
|
|
14
|
-
let
|
|
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
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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,18 +136,9 @@ 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
|
-
|
|
133
|
-
|
|
134
|
-
//TODO: Review this with gancho
|
|
135
|
-
const _provider = {
|
|
136
|
-
...provider,
|
|
137
|
-
request: args => {
|
|
138
|
-
return provider?.request(args, `eip155:${chainId}`);
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
return Promise.resolve(_provider);
|
|
141
|
+
return provider;
|
|
142
142
|
},
|
|
143
143
|
async isAuthorized() {
|
|
144
144
|
try {
|
|
@@ -151,7 +151,7 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
151
151
|
async switchChain({
|
|
152
152
|
chainId
|
|
153
153
|
}) {
|
|
154
|
-
const _provider =
|
|
154
|
+
const _provider = appKitProvidedConnector.getProvider('eip155');
|
|
155
155
|
if (!_provider) throw new Error('Provider not available for switching chain.');
|
|
156
156
|
const newChain = config.chains.find(c => c.id === chainId);
|
|
157
157
|
if (!newChain) throw new _viem.SwitchChainError(new _wagmi.ChainNotConfiguredError());
|
|
@@ -162,29 +162,23 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
162
162
|
chainId: (0, _viem.numberToHex)(chainId)
|
|
163
163
|
}]
|
|
164
164
|
});
|
|
165
|
-
config.emitter.emit('change', {
|
|
166
|
-
chainId
|
|
167
|
-
});
|
|
168
165
|
return newChain;
|
|
169
|
-
} catch (
|
|
170
|
-
|
|
171
|
-
|
|
166
|
+
} catch (err) {
|
|
167
|
+
const error = err;
|
|
168
|
+
if (/(user rejected)/i.test(error.message)) throw new _viem.UserRejectedRequestError(error);
|
|
172
169
|
if (error?.code === 4902 || error?.data?.originalError?.code === 4902) {
|
|
170
|
+
// Indicates chain is not added to provider
|
|
173
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
|
+
};
|
|
174
179
|
await _provider.request({
|
|
175
180
|
method: 'wallet_addEthereumChain',
|
|
176
|
-
params: [
|
|
177
|
-
chainId: (0, _viem.numberToHex)(chainId),
|
|
178
|
-
chainName: newChain.name,
|
|
179
|
-
nativeCurrency: newChain.nativeCurrency,
|
|
180
|
-
rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
|
|
181
|
-
// Take first default HTTP RPC URL
|
|
182
|
-
blockExplorerUrls: [newChain.blockExplorers?.default?.url]
|
|
183
|
-
}]
|
|
184
|
-
});
|
|
185
|
-
await appKitProvidedConnector.switchNetwork((0, _helpers.formatNetwork)(newChain));
|
|
186
|
-
config.emitter.emit('change', {
|
|
187
|
-
chainId
|
|
181
|
+
params: [addEthereumChainParams]
|
|
188
182
|
});
|
|
189
183
|
return newChain;
|
|
190
184
|
} catch (addError) {
|
|
@@ -195,18 +189,64 @@ function UniversalConnector(appKitProvidedConnector) {
|
|
|
195
189
|
}
|
|
196
190
|
},
|
|
197
191
|
onAccountsChanged(accounts) {
|
|
198
|
-
if
|
|
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', {
|
|
199
195
|
accounts: accounts.map(x => (0, _viem.getAddress)(x))
|
|
200
196
|
});
|
|
201
197
|
},
|
|
202
198
|
onChainChanged(chain) {
|
|
203
199
|
const chainId = Number(chain);
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
+
}
|
|
207
208
|
},
|
|
208
|
-
onDisconnect
|
|
209
|
+
async onDisconnect() {
|
|
209
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();
|
|
210
250
|
}
|
|
211
251
|
}));
|
|
212
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_viem","require","_wagmi","
|
|
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":[]}
|
package/lib/module/adapter.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { EVMAdapter } from '@reown/appkit-common-react-native';
|
|
4
|
-
import { createConfig, getBalance as getBalanceWagmi, switchChain as switchChainWagmi, disconnect as disconnectWagmiCore, connect as connectWagmi } from '@wagmi/core';
|
|
4
|
+
import { createConfig, getBalance as getBalanceWagmi, switchChain as switchChainWagmi, disconnect as disconnectWagmiCore, connect as connectWagmi, watchAccount } from '@wagmi/core';
|
|
5
5
|
import { getTransport } from './utils/helpers';
|
|
6
6
|
import { formatUnits } from 'viem';
|
|
7
7
|
import { UniversalConnector } from './connectors/UniversalConnector';
|
|
@@ -9,7 +9,6 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
9
9
|
static supportedNamespace = 'eip155';
|
|
10
10
|
constructor(configParams) {
|
|
11
11
|
super({
|
|
12
|
-
projectId: configParams.projectId,
|
|
13
12
|
supportedNamespace: WagmiAdapter.supportedNamespace,
|
|
14
13
|
adapterType: 'wagmi'
|
|
15
14
|
});
|
|
@@ -109,8 +108,12 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
109
108
|
getSupportedNamespace() {
|
|
110
109
|
return WagmiAdapter.supportedNamespace;
|
|
111
110
|
}
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
init({
|
|
112
|
+
connector: _connector
|
|
113
|
+
}) {
|
|
114
|
+
super.init({
|
|
115
|
+
connector: _connector
|
|
116
|
+
});
|
|
114
117
|
if (_connector && this.wagmiChains) {
|
|
115
118
|
if (!this.wagmiConfigConnector) {
|
|
116
119
|
// Manually add the connector to the wagmiConfig
|
|
@@ -134,6 +137,19 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
134
137
|
}
|
|
135
138
|
}
|
|
136
139
|
}
|
|
140
|
+
this.setupWatchers();
|
|
141
|
+
}
|
|
142
|
+
setupWatchers() {
|
|
143
|
+
watchAccount(this.wagmiConfig, {
|
|
144
|
+
onChange: (accountData, prevAccountData) => {
|
|
145
|
+
if (accountData.status === 'disconnected' && prevAccountData.address) {
|
|
146
|
+
this.onDisconnect();
|
|
147
|
+
}
|
|
148
|
+
if (accountData?.chainId && accountData?.chainId !== prevAccountData?.chainId) {
|
|
149
|
+
this.onChainChanged(accountData.chainId?.toString());
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
});
|
|
137
153
|
}
|
|
138
154
|
}
|
|
139
155
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EVMAdapter","createConfig","getBalance","getBalanceWagmi","switchChain","switchChainWagmi","disconnect","disconnectWagmiCore","connect","connectWagmi","getTransport","formatUnits","UniversalConnector","WagmiAdapter","supportedNamespace","constructor","configParams","
|
|
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":"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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
|
|
9
|
-
let
|
|
10
|
-
let
|
|
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
|
-
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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,18 +132,9 @@ 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
|
-
|
|
129
|
-
|
|
130
|
-
//TODO: Review this with gancho
|
|
131
|
-
const _provider = {
|
|
132
|
-
...provider,
|
|
133
|
-
request: args => {
|
|
134
|
-
return provider?.request(args, `eip155:${chainId}`);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
return Promise.resolve(_provider);
|
|
137
|
+
return provider;
|
|
138
138
|
},
|
|
139
139
|
async isAuthorized() {
|
|
140
140
|
try {
|
|
@@ -147,7 +147,7 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
147
147
|
async switchChain({
|
|
148
148
|
chainId
|
|
149
149
|
}) {
|
|
150
|
-
const _provider =
|
|
150
|
+
const _provider = appKitProvidedConnector.getProvider('eip155');
|
|
151
151
|
if (!_provider) throw new Error('Provider not available for switching chain.');
|
|
152
152
|
const newChain = config.chains.find(c => c.id === chainId);
|
|
153
153
|
if (!newChain) throw new SwitchChainError(new ChainNotConfiguredError());
|
|
@@ -158,29 +158,23 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
158
158
|
chainId: numberToHex(chainId)
|
|
159
159
|
}]
|
|
160
160
|
});
|
|
161
|
-
config.emitter.emit('change', {
|
|
162
|
-
chainId
|
|
163
|
-
});
|
|
164
161
|
return newChain;
|
|
165
|
-
} catch (
|
|
166
|
-
|
|
167
|
-
|
|
162
|
+
} catch (err) {
|
|
163
|
+
const error = err;
|
|
164
|
+
if (/(user rejected)/i.test(error.message)) throw new UserRejectedRequestError(error);
|
|
168
165
|
if (error?.code === 4902 || error?.data?.originalError?.code === 4902) {
|
|
166
|
+
// Indicates chain is not added to provider
|
|
169
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
|
+
};
|
|
170
175
|
await _provider.request({
|
|
171
176
|
method: 'wallet_addEthereumChain',
|
|
172
|
-
params: [
|
|
173
|
-
chainId: numberToHex(chainId),
|
|
174
|
-
chainName: newChain.name,
|
|
175
|
-
nativeCurrency: newChain.nativeCurrency,
|
|
176
|
-
rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
|
|
177
|
-
// Take first default HTTP RPC URL
|
|
178
|
-
blockExplorerUrls: [newChain.blockExplorers?.default?.url]
|
|
179
|
-
}]
|
|
180
|
-
});
|
|
181
|
-
await appKitProvidedConnector.switchNetwork(formatNetwork(newChain));
|
|
182
|
-
config.emitter.emit('change', {
|
|
183
|
-
chainId
|
|
177
|
+
params: [addEthereumChainParams]
|
|
184
178
|
});
|
|
185
179
|
return newChain;
|
|
186
180
|
} catch (addError) {
|
|
@@ -191,18 +185,64 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
191
185
|
}
|
|
192
186
|
},
|
|
193
187
|
onAccountsChanged(accounts) {
|
|
194
|
-
if
|
|
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', {
|
|
195
191
|
accounts: accounts.map(x => getAddress(x))
|
|
196
192
|
});
|
|
197
193
|
},
|
|
198
194
|
onChainChanged(chain) {
|
|
199
195
|
const chainId = Number(chain);
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
+
}
|
|
203
204
|
},
|
|
204
|
-
onDisconnect
|
|
205
|
+
async onDisconnect() {
|
|
205
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();
|
|
206
246
|
}
|
|
207
247
|
}));
|
|
208
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAddress","numberToHex","SwitchChainError","UserRejectedRequestError","ChainNotConfiguredError","createConnector","ProviderNotFoundError","
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import { EVMAdapter,
|
|
1
|
+
import { EVMAdapter, type AppKitNetwork, type BlockchainAdapterInitParams, type CaipAddress, type ChainNamespace, type GetBalanceParams, type GetBalanceResponse } from '@reown/appkit-common-react-native';
|
|
2
2
|
import { type Config, type CreateConfigParameters, type Connector } from '@wagmi/core';
|
|
3
3
|
import type { Chain } from 'wagmi/chains';
|
|
4
4
|
type ConfigParams = Partial<CreateConfigParameters> & {
|
|
@@ -18,7 +18,8 @@ export declare class WagmiAdapter extends EVMAdapter {
|
|
|
18
18
|
getAccounts(): CaipAddress[] | undefined;
|
|
19
19
|
disconnect(): Promise<void>;
|
|
20
20
|
getSupportedNamespace(): ChainNamespace;
|
|
21
|
-
|
|
21
|
+
init({ connector: _connector }: BlockchainAdapterInitParams): void;
|
|
22
|
+
setupWatchers(): void;
|
|
22
23
|
}
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,
|
|
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;gBAE7B,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;IAejC,qBAAqB,IAAI,cAAc;IAI9B,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,2BAA2B,GAAG,IAAI;IAgC3E,aAAa;CAad"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { Provider, WalletConnector } from '@reown/appkit-common-react-native';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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,
|
|
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": "0.0.0-chore-
|
|
3
|
+
"version": "0.0.0-chore-spring-effect-20250909214820",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"types": "lib/typescript/index.d.ts",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"access": "public"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@reown/appkit-common-react-native": "0.0.0-chore-
|
|
44
|
-
"@reown/appkit-react-native": "0.0.0-chore-
|
|
45
|
-
"@reown/appkit-siwe-react-native": "0.0.0-chore-
|
|
43
|
+
"@reown/appkit-common-react-native": "0.0.0-chore-spring-effect-20250909214820",
|
|
44
|
+
"@reown/appkit-react-native": "0.0.0-chore-spring-effect-20250909214820",
|
|
45
|
+
"@reown/appkit-siwe-react-native": "0.0.0-chore-spring-effect-20250909214820"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"@react-native-community/netinfo": "*",
|
package/src/adapter.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EVMAdapter,
|
|
3
|
-
WalletConnector,
|
|
4
3
|
type AppKitNetwork,
|
|
4
|
+
type BlockchainAdapterInitParams,
|
|
5
5
|
type CaipAddress,
|
|
6
6
|
type ChainNamespace,
|
|
7
7
|
type GetBalanceParams,
|
|
@@ -15,7 +15,8 @@ import {
|
|
|
15
15
|
switchChain as switchChainWagmi,
|
|
16
16
|
disconnect as disconnectWagmiCore,
|
|
17
17
|
connect as connectWagmi,
|
|
18
|
-
type Connector
|
|
18
|
+
type Connector,
|
|
19
|
+
watchAccount
|
|
19
20
|
} from '@wagmi/core';
|
|
20
21
|
import type { Chain } from 'wagmi/chains';
|
|
21
22
|
import { getTransport } from './utils/helpers';
|
|
@@ -36,7 +37,6 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
36
37
|
|
|
37
38
|
constructor(configParams: ConfigParams) {
|
|
38
39
|
super({
|
|
39
|
-
projectId: configParams.projectId,
|
|
40
40
|
supportedNamespace: WagmiAdapter.supportedNamespace,
|
|
41
41
|
adapterType: 'wagmi'
|
|
42
42
|
});
|
|
@@ -149,8 +149,8 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
149
149
|
return WagmiAdapter.supportedNamespace;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
override
|
|
153
|
-
super.
|
|
152
|
+
override init({ connector: _connector }: BlockchainAdapterInitParams): void {
|
|
153
|
+
super.init({ connector: _connector });
|
|
154
154
|
|
|
155
155
|
if (_connector && this.wagmiChains) {
|
|
156
156
|
if (!this.wagmiConfigConnector) {
|
|
@@ -177,5 +177,21 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
+
|
|
181
|
+
this.setupWatchers();
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
setupWatchers() {
|
|
185
|
+
watchAccount(this.wagmiConfig, {
|
|
186
|
+
onChange: (accountData, prevAccountData) => {
|
|
187
|
+
if (accountData.status === 'disconnected' && prevAccountData.address) {
|
|
188
|
+
this.onDisconnect();
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (accountData?.chainId && accountData?.chainId !== prevAccountData?.chainId) {
|
|
192
|
+
this.onChainChanged(accountData.chainId?.toString());
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
});
|
|
180
196
|
}
|
|
181
197
|
}
|
|
@@ -1,62 +1,56 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
RequestArguments,
|
|
4
|
-
WalletConnector
|
|
5
|
-
} from '@reown/appkit-common-react-native';
|
|
1
|
+
import type { Provider, WalletConnector } from '@reown/appkit-common-react-native';
|
|
2
|
+
|
|
6
3
|
import {
|
|
7
4
|
getAddress,
|
|
8
5
|
numberToHex,
|
|
6
|
+
RpcError,
|
|
9
7
|
SwitchChainError,
|
|
10
8
|
UserRejectedRequestError,
|
|
11
9
|
type Hex
|
|
12
10
|
} from 'viem';
|
|
13
|
-
import {
|
|
14
|
-
|
|
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
|
+
};
|
|
15
25
|
|
|
16
26
|
export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
17
27
|
let provider: Provider | undefined;
|
|
18
28
|
|
|
19
|
-
let
|
|
20
|
-
let
|
|
21
|
-
let
|
|
29
|
+
let accountsChanged: UniversalConnector['onAccountsChanged'] | undefined;
|
|
30
|
+
let chainChanged: UniversalConnector['onChainChanged'] | undefined;
|
|
31
|
+
let sessionDelete: UniversalConnector['onSessionDelete'] | undefined;
|
|
32
|
+
let disconnect: UniversalConnector['onDisconnect'] | undefined;
|
|
22
33
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return createConnector<Provider, AppKitConnectorProperties>(config => ({
|
|
34
|
+
return createConnector<Provider, Properties>(config => ({
|
|
26
35
|
id: 'walletconnect',
|
|
27
36
|
name: 'WalletConnect',
|
|
28
37
|
type: 'walletconnect' as const,
|
|
29
|
-
ready: !!appKitProvidedConnector.getProvider(),
|
|
38
|
+
ready: !!appKitProvidedConnector.getProvider('eip155'),
|
|
30
39
|
|
|
31
40
|
async setup() {
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
chainChangedHandler = (chainId: string | number) => {
|
|
42
|
-
const newChainId = typeof chainId === 'string' ? parseInt(chainId, 10) : chainId;
|
|
43
|
-
config.emitter.emit('change', { chainId: newChainId });
|
|
44
|
-
};
|
|
45
|
-
disconnectHandler = (error?: Error) => {
|
|
46
|
-
config.emitter.emit('disconnect');
|
|
47
|
-
if (error) config.emitter.emit('error', { error });
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
if (accountsChangedHandler) provider.on('accountsChanged', accountsChangedHandler);
|
|
51
|
-
if (chainChangedHandler) provider.on('chainChanged', chainChangedHandler);
|
|
52
|
-
if (disconnectHandler) provider.on('disconnect', disconnectHandler);
|
|
53
|
-
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);
|
|
54
48
|
}
|
|
55
49
|
},
|
|
56
50
|
|
|
57
51
|
async connect({ chainId } = {}) {
|
|
58
52
|
try {
|
|
59
|
-
const _provider =
|
|
53
|
+
const _provider = appKitProvidedConnector.getProvider('eip155');
|
|
60
54
|
if (!_provider) throw new ProviderNotFoundError();
|
|
61
55
|
|
|
62
56
|
// AppKit connector is already connected or handles its own connection.
|
|
@@ -75,8 +69,22 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
75
69
|
await this.switchChain?.({ chainId });
|
|
76
70
|
currentChainId = chainId;
|
|
77
71
|
}
|
|
78
|
-
|
|
79
|
-
|
|
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
|
+
}
|
|
80
88
|
|
|
81
89
|
return { accounts: accountAddresses, chainId: currentChainId };
|
|
82
90
|
} catch (error) {
|
|
@@ -86,18 +94,32 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
86
94
|
},
|
|
87
95
|
|
|
88
96
|
async disconnect() {
|
|
89
|
-
await
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
+
}
|
|
99
122
|
}
|
|
100
|
-
this.ready = false;
|
|
101
123
|
},
|
|
102
124
|
|
|
103
125
|
async getAccounts() {
|
|
@@ -140,20 +162,10 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
140
162
|
|
|
141
163
|
async getProvider() {
|
|
142
164
|
if (!provider) {
|
|
143
|
-
provider = appKitProvidedConnector.getProvider();
|
|
165
|
+
provider = appKitProvidedConnector.getProvider('eip155');
|
|
144
166
|
}
|
|
145
167
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
//TODO: Review this with gancho
|
|
149
|
-
const _provider = {
|
|
150
|
-
...provider,
|
|
151
|
-
request: (args: RequestArguments) => {
|
|
152
|
-
return provider?.request(args, `eip155:${chainId}`);
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
return Promise.resolve(_provider as Provider);
|
|
168
|
+
return provider;
|
|
157
169
|
},
|
|
158
170
|
|
|
159
171
|
async isAuthorized() {
|
|
@@ -167,7 +179,7 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
167
179
|
},
|
|
168
180
|
|
|
169
181
|
async switchChain({ chainId }) {
|
|
170
|
-
const _provider =
|
|
182
|
+
const _provider = appKitProvidedConnector.getProvider('eip155');
|
|
171
183
|
if (!_provider) throw new Error('Provider not available for switching chain.');
|
|
172
184
|
const newChain = config.chains.find(c => c.id === chainId);
|
|
173
185
|
|
|
@@ -179,28 +191,27 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
179
191
|
params: [{ chainId: numberToHex(chainId) }]
|
|
180
192
|
});
|
|
181
193
|
|
|
182
|
-
config.emitter.emit('change', { chainId });
|
|
183
|
-
|
|
184
194
|
return newChain;
|
|
185
|
-
} catch (
|
|
186
|
-
|
|
187
|
-
|
|
195
|
+
} catch (err) {
|
|
196
|
+
const error = err as RpcError;
|
|
197
|
+
|
|
198
|
+
if (/(user rejected)/i.test(error.message)) throw new UserRejectedRequestError(error);
|
|
199
|
+
|
|
188
200
|
if ((error as any)?.code === 4902 || (error as any)?.data?.originalError?.code === 4902) {
|
|
201
|
+
// Indicates chain is not added to provider
|
|
189
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
|
+
|
|
190
211
|
await _provider.request({
|
|
191
212
|
method: 'wallet_addEthereumChain',
|
|
192
|
-
params: [
|
|
193
|
-
{
|
|
194
|
-
chainId: numberToHex(chainId),
|
|
195
|
-
chainName: newChain.name,
|
|
196
|
-
nativeCurrency: newChain.nativeCurrency,
|
|
197
|
-
rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''], // Take first default HTTP RPC URL
|
|
198
|
-
blockExplorerUrls: [newChain.blockExplorers?.default?.url]
|
|
199
|
-
}
|
|
200
|
-
]
|
|
213
|
+
params: [addEthereumChainParams]
|
|
201
214
|
});
|
|
202
|
-
await appKitProvidedConnector.switchNetwork(formatNetwork(newChain));
|
|
203
|
-
config.emitter.emit('change', { chainId });
|
|
204
215
|
|
|
205
216
|
return newChain;
|
|
206
217
|
} catch (addError) {
|
|
@@ -212,17 +223,67 @@ export function UniversalConnector(appKitProvidedConnector: WalletConnector) {
|
|
|
212
223
|
},
|
|
213
224
|
|
|
214
225
|
onAccountsChanged(accounts: string[]) {
|
|
226
|
+
//Only emit if the account is an evm account
|
|
227
|
+
const shouldEmit = accounts.some(account => account.startsWith('0x'));
|
|
228
|
+
|
|
215
229
|
if (accounts.length === 0) this.onDisconnect();
|
|
216
|
-
else
|
|
230
|
+
else if (shouldEmit)
|
|
231
|
+
config.emitter.emit('change', { accounts: accounts.map(x => getAddress(x)) });
|
|
217
232
|
},
|
|
218
233
|
|
|
219
234
|
onChainChanged(chain: string) {
|
|
220
235
|
const chainId = Number(chain);
|
|
221
|
-
|
|
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
|
+
}
|
|
222
242
|
},
|
|
223
243
|
|
|
224
|
-
onDisconnect
|
|
244
|
+
async onDisconnect() {
|
|
225
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();
|
|
226
287
|
}
|
|
227
288
|
}));
|
|
228
289
|
}
|