@reown/appkit-wagmi-react-native 2.0.0 → 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 +45 -5
- package/lib/commonjs/adapter.js.map +1 -1
- package/lib/commonjs/connectors/UniversalConnector.js +105 -89
- package/lib/commonjs/connectors/UniversalConnector.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/utils/helpers.js +2 -3
- package/lib/commonjs/utils/helpers.js.map +1 -1
- package/lib/module/adapter.js +48 -6
- package/lib/module/adapter.js.map +1 -1
- package/lib/module/connectors/UniversalConnector.js +107 -89
- package/lib/module/connectors/UniversalConnector.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/helpers.js +4 -3
- package/lib/module/utils/helpers.js.map +1 -1
- package/lib/typescript/adapter.d.ts +5 -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/lib/typescript/utils/helpers.d.ts.map +1 -1
- package/package.json +13 -29
- package/src/adapter.ts +54 -7
- package/src/connectors/UniversalConnector.ts +123 -86
- package/src/utils/helpers.ts +2 -3
|
@@ -1,51 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
1
3
|
import { getAddress, numberToHex, SwitchChainError, UserRejectedRequestError } from 'viem';
|
|
2
4
|
import { ChainNotConfiguredError, createConnector, ProviderNotFoundError } from 'wagmi';
|
|
3
|
-
import { formatNetwork } from '../utils/helpers';
|
|
4
5
|
export function UniversalConnector(appKitProvidedConnector) {
|
|
5
6
|
let provider;
|
|
6
|
-
let
|
|
7
|
-
let
|
|
8
|
-
let
|
|
7
|
+
let accountsChanged;
|
|
8
|
+
let chainChanged;
|
|
9
|
+
let sessionDelete;
|
|
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
|
+
}
|
|
9
29
|
return createConnector(config => ({
|
|
10
30
|
id: 'walletconnect',
|
|
11
31
|
name: 'WalletConnect',
|
|
12
32
|
type: 'walletconnect',
|
|
13
|
-
ready: !!appKitProvidedConnector.getProvider(),
|
|
33
|
+
ready: !!appKitProvidedConnector.getProvider('eip155'),
|
|
14
34
|
async setup() {
|
|
15
|
-
|
|
16
|
-
if (
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (hexAccounts.length === 0) {
|
|
23
|
-
config.emitter.emit('disconnect');
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
chainChangedHandler = chainId => {
|
|
27
|
-
const newChainId = typeof chainId === 'string' ? parseInt(chainId, 10) : chainId;
|
|
28
|
-
config.emitter.emit('change', {
|
|
29
|
-
chainId: newChainId
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
disconnectHandler = error => {
|
|
33
|
-
config.emitter.emit('disconnect');
|
|
34
|
-
if (error) config.emitter.emit('error', {
|
|
35
|
-
error
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
if (accountsChangedHandler) provider.on('accountsChanged', accountsChangedHandler);
|
|
39
|
-
if (chainChangedHandler) provider.on('chainChanged', chainChangedHandler);
|
|
40
|
-
if (disconnectHandler) provider.on('disconnect', disconnectHandler);
|
|
41
|
-
if (disconnectHandler) provider.on('session_delete', disconnectHandler);
|
|
35
|
+
const _provider = await this.getProvider().catch(() => null);
|
|
36
|
+
if (!_provider) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!sessionDelete) {
|
|
40
|
+
sessionDelete = this.onSessionDelete.bind(this);
|
|
41
|
+
_provider.on('session_delete', sessionDelete);
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
async connect({
|
|
45
45
|
chainId
|
|
46
46
|
} = {}) {
|
|
47
47
|
try {
|
|
48
|
-
const _provider =
|
|
48
|
+
const _provider = appKitProvidedConnector.getProvider('eip155');
|
|
49
49
|
if (!_provider) throw new ProviderNotFoundError();
|
|
50
50
|
|
|
51
51
|
// AppKit connector is already connected or handles its own connection.
|
|
@@ -63,7 +63,22 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
63
63
|
});
|
|
64
64
|
currentChainId = chainId;
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
if (!accountsChanged) {
|
|
67
|
+
accountsChanged = this.onAccountsChanged.bind(this);
|
|
68
|
+
_provider.on('accountsChanged', accountsChanged);
|
|
69
|
+
}
|
|
70
|
+
if (!chainChanged) {
|
|
71
|
+
chainChanged = this.onChainChanged.bind(this);
|
|
72
|
+
_provider.on('chainChanged', chainChanged);
|
|
73
|
+
}
|
|
74
|
+
if (!disconnect) {
|
|
75
|
+
disconnect = this.onDisconnect.bind(this);
|
|
76
|
+
_provider.on('disconnect', disconnect);
|
|
77
|
+
}
|
|
78
|
+
if (!sessionDelete) {
|
|
79
|
+
sessionDelete = this.onSessionDelete.bind(this);
|
|
80
|
+
_provider.on('session_delete', sessionDelete);
|
|
81
|
+
}
|
|
67
82
|
return {
|
|
68
83
|
accounts: accountAddresses,
|
|
69
84
|
chainId: currentChainId
|
|
@@ -73,27 +88,24 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
73
88
|
throw new UserRejectedRequestError(error); // Generalize other errors as user rejection for simplicity
|
|
74
89
|
}
|
|
75
90
|
},
|
|
76
|
-
|
|
77
91
|
async disconnect() {
|
|
78
|
-
await
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
const _provider = await this.getProvider().catch(() => null);
|
|
93
|
+
try {
|
|
94
|
+
await appKitProvidedConnector.disconnect();
|
|
95
|
+
config.emitter.emit('message', {
|
|
96
|
+
type: 'externalDisconnect'
|
|
97
|
+
});
|
|
98
|
+
} catch (error) {
|
|
99
|
+
if (!/No matching key/i.test(error.message)) {
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
} finally {
|
|
103
|
+
cleanupEventListeners(_provider);
|
|
90
104
|
}
|
|
91
|
-
this.ready = false;
|
|
92
105
|
},
|
|
93
106
|
async getAccounts() {
|
|
94
107
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
95
|
-
|
|
96
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
108
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts;
|
|
97
109
|
if (!eip155Accounts) return [];
|
|
98
110
|
return eip155Accounts.map(caipAddr => {
|
|
99
111
|
const parts = caipAddr.split(':');
|
|
@@ -106,8 +118,7 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
106
118
|
|
|
107
119
|
// Fallback: Try to get from CAIP accounts if available
|
|
108
120
|
const namespaces = appKitProvidedConnector.getNamespaces();
|
|
109
|
-
|
|
110
|
-
const eip155Accounts = namespaces?.eip155?.accounts;
|
|
121
|
+
const eip155Accounts = namespaces?.['eip155']?.accounts;
|
|
111
122
|
if (eip155Accounts && eip155Accounts.length > 0) {
|
|
112
123
|
const parts = eip155Accounts[0]?.split(':');
|
|
113
124
|
if (parts && parts.length > 1 && typeof parts[1] === 'string') {
|
|
@@ -122,18 +133,9 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
122
133
|
},
|
|
123
134
|
async getProvider() {
|
|
124
135
|
if (!provider) {
|
|
125
|
-
provider = appKitProvidedConnector.getProvider();
|
|
136
|
+
provider = appKitProvidedConnector.getProvider('eip155');
|
|
126
137
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
//TODO: Review this with gancho
|
|
130
|
-
const _provider = {
|
|
131
|
-
...provider,
|
|
132
|
-
request: args => {
|
|
133
|
-
return provider?.request(args, `eip155:${chainId}`);
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
return Promise.resolve(_provider);
|
|
138
|
+
return provider;
|
|
137
139
|
},
|
|
138
140
|
async isAuthorized() {
|
|
139
141
|
try {
|
|
@@ -146,7 +148,7 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
146
148
|
async switchChain({
|
|
147
149
|
chainId
|
|
148
150
|
}) {
|
|
149
|
-
const _provider =
|
|
151
|
+
const _provider = appKitProvidedConnector.getProvider('eip155');
|
|
150
152
|
if (!_provider) throw new Error('Provider not available for switching chain.');
|
|
151
153
|
const newChain = config.chains.find(c => c.id === chainId);
|
|
152
154
|
if (!newChain) throw new SwitchChainError(new ChainNotConfiguredError());
|
|
@@ -157,29 +159,23 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
157
159
|
chainId: numberToHex(chainId)
|
|
158
160
|
}]
|
|
159
161
|
});
|
|
160
|
-
config.emitter.emit('change', {
|
|
161
|
-
chainId
|
|
162
|
-
});
|
|
163
162
|
return newChain;
|
|
164
|
-
} catch (
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
} catch (err) {
|
|
164
|
+
const error = err;
|
|
165
|
+
if (/(user rejected)/i.test(error.message)) throw new UserRejectedRequestError(error);
|
|
167
166
|
if (error?.code === 4902 || error?.data?.originalError?.code === 4902) {
|
|
167
|
+
// Indicates chain is not added to provider
|
|
168
168
|
try {
|
|
169
|
+
const addEthereumChainParams = {
|
|
170
|
+
chainId: numberToHex(chainId),
|
|
171
|
+
chainName: newChain.name,
|
|
172
|
+
nativeCurrency: newChain.nativeCurrency,
|
|
173
|
+
rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
|
|
174
|
+
blockExplorerUrls: [newChain.blockExplorers?.default?.url]
|
|
175
|
+
};
|
|
169
176
|
await _provider.request({
|
|
170
177
|
method: 'wallet_addEthereumChain',
|
|
171
|
-
params: [
|
|
172
|
-
chainId: numberToHex(chainId),
|
|
173
|
-
chainName: newChain.name,
|
|
174
|
-
nativeCurrency: newChain.nativeCurrency,
|
|
175
|
-
rpcUrls: [newChain.rpcUrls.default?.http[0] ?? ''],
|
|
176
|
-
// Take first default HTTP RPC URL
|
|
177
|
-
blockExplorerUrls: [newChain.blockExplorers?.default?.url]
|
|
178
|
-
}]
|
|
179
|
-
});
|
|
180
|
-
await appKitProvidedConnector.switchNetwork(formatNetwork(newChain));
|
|
181
|
-
config.emitter.emit('change', {
|
|
182
|
-
chainId
|
|
178
|
+
params: [addEthereumChainParams]
|
|
183
179
|
});
|
|
184
180
|
return newChain;
|
|
185
181
|
} catch (addError) {
|
|
@@ -190,18 +186,40 @@ export function UniversalConnector(appKitProvidedConnector) {
|
|
|
190
186
|
}
|
|
191
187
|
},
|
|
192
188
|
onAccountsChanged(accounts) {
|
|
193
|
-
if
|
|
194
|
-
|
|
195
|
-
|
|
189
|
+
//Only emit if the account is an evm account
|
|
190
|
+
const shouldEmit = accounts.some(account => account.startsWith('0x'));
|
|
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
|
+
}
|
|
196
198
|
},
|
|
197
199
|
onChainChanged(chain) {
|
|
198
200
|
const chainId = Number(chain);
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
|
|
202
|
+
//Only emit if the chain is in the config (evm)
|
|
203
|
+
const shouldEmit = config.chains.some(c => c.id === chainId);
|
|
204
|
+
if (shouldEmit) {
|
|
205
|
+
config.emitter.emit('change', {
|
|
206
|
+
chainId
|
|
207
|
+
});
|
|
208
|
+
}
|
|
202
209
|
},
|
|
203
|
-
onDisconnect
|
|
210
|
+
async onDisconnect() {
|
|
204
211
|
config.emitter.emit('disconnect');
|
|
212
|
+
try {
|
|
213
|
+
const _provider = await this.getProvider();
|
|
214
|
+
cleanupEventListeners(_provider);
|
|
215
|
+
} catch (error) {
|
|
216
|
+
// If provider is not available, still clean up local references
|
|
217
|
+
// to prevent memory leaks
|
|
218
|
+
cleanupEventListeners(null);
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
onSessionDelete() {
|
|
222
|
+
this.onDisconnect();
|
|
205
223
|
}
|
|
206
224
|
}));
|
|
207
225
|
}
|
|
@@ -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","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":[]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WagmiAdapter","formatNetworks","formatNetwork"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,YAAY,QAAQ,WAAW;AAExC,SAASA,YAAY;AACrB,SAASC,cAAc,EAAEC,aAAa,QAAQ,iBAAiB"}
|
|
1
|
+
{"version":3,"names":["WagmiAdapter","formatNetworks","formatNetwork"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,WAAW;AAExC,SAASA,YAAY;AACrB,SAASC,cAAc,EAAEC,aAAa,QAAQ,iBAAiB","ignoreList":[]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
3
|
import { http } from 'viem';
|
|
4
|
+
import { PresetsUtil, ConstantsUtil } from '@reown/appkit-common-react-native';
|
|
4
5
|
export function getTransport({
|
|
5
6
|
chainId,
|
|
6
7
|
projectId
|
|
7
8
|
}) {
|
|
8
|
-
const RPC_URL =
|
|
9
|
+
const RPC_URL = ConstantsUtil.BLOCKCHAIN_API_RPC_URL;
|
|
9
10
|
if (!PresetsUtil.RpcChainIds.includes(chainId)) {
|
|
10
11
|
return http();
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["http","PresetsUtil","ConstantsUtil","getTransport","chainId","projectId","RPC_URL","BLOCKCHAIN_API_RPC_URL","RpcChainIds","includes","EIP155","formatNetwork","network","rpcUrls","chainNamespace","caipNetworkId","id","formatNetworks","networks","map"],"sourceRoot":"../../../src","sources":["utils/helpers.ts"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,MAAM;AAC3B,SACEC,WAAW,EACXC,aAAa,QAGR,mCAAmC;AAE1C,OAAO,SAASC,YAAYA,CAAC;EAAEC,OAAO;EAAEC;AAAkD,CAAC,EAAE;EAC3F,MAAMC,OAAO,GAAGJ,aAAa,CAACK,sBAAsB;EAEpD,IAAI,CAACN,WAAW,CAACO,WAAW,CAACC,QAAQ,CAACL,OAAO,CAAC,EAAE;IAC9C,OAAOJ,IAAI,CAAC,CAAC;EACf;EAEA,OAAOA,IAAI,CAAC,GAAGM,OAAO,gBAAgBJ,aAAa,CAACQ,MAAM,IAAIN,OAAO,cAAcC,SAAS,EAAE,CAAC;AACjG;AAEA,OAAO,SAASM,aAAaA,CAACC,OAAgB,EAAiB;EAC7D,OAAO;IACL,GAAGA,OAAO;IACVC,OAAO,EAAE;MAAE,GAAGD,OAAO,CAACC;IAAQ,CAAC;IAC/BC,cAAc,EAAE,QAAQ;IACxBC,aAAa,EAAE,UAAUH,OAAO,CAACI,EAAE;EACrC,CAAC;AACH;AAEA,OAAO,SAASC,cAAcA,CAACC,QAAmB,EAAmB;EACnE,OAAOA,QAAQ,CAACC,GAAG,CAACR,aAAa,CAAC;AACpC","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> & {
|
|
@@ -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,7 +19,9 @@ export declare class WagmiAdapter extends EVMAdapter {
|
|
|
18
19
|
getAccounts(): CaipAddress[] | undefined;
|
|
19
20
|
disconnect(): Promise<void>;
|
|
20
21
|
getSupportedNamespace(): ChainNamespace;
|
|
21
|
-
|
|
22
|
+
subscribeToEvents(): void;
|
|
23
|
+
init({ connector: _connector }: BlockchainAdapterInitParams): void;
|
|
24
|
+
setupWatchers(): void;
|
|
22
25
|
}
|
|
23
26
|
export {};
|
|
24
27
|
//# 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;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,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,oFA+O1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,OAAO,EACb,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,OAAO,EACb,MAAM,mCAAmC,CAAC;AAE3C,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,kDAQ1F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAO7D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAEnE"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
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",
|
|
7
|
+
"react-native": "src/index.tsx",
|
|
7
8
|
"source": "src/index.tsx",
|
|
8
9
|
"scripts": {
|
|
9
10
|
"build": "bob build",
|
|
@@ -28,46 +29,29 @@
|
|
|
28
29
|
"wagmi"
|
|
29
30
|
],
|
|
30
31
|
"repository": "https://github.com/reown-com/appkit-react-native",
|
|
31
|
-
"author": "Reown
|
|
32
|
+
"author": "Reown (https://discord.gg/reown)",
|
|
32
33
|
"homepage": "https://reown.com/appkit",
|
|
33
|
-
"license": "
|
|
34
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
34
35
|
"bugs": {
|
|
35
36
|
"url": "https://github.com/reown-com/appkit-react-native/issues"
|
|
36
37
|
},
|
|
37
38
|
"publishConfig": {
|
|
38
39
|
"registry": "https://registry.npmjs.org/",
|
|
39
|
-
"access": "public"
|
|
40
|
+
"access": "public",
|
|
41
|
+
"provenance": true
|
|
40
42
|
},
|
|
41
43
|
"dependencies": {
|
|
42
|
-
"@reown/appkit-common-react-native": "2.0.
|
|
43
|
-
"@reown/appkit-react-native": "2.0.
|
|
44
|
-
"@reown/appkit-scaffold-utils-react-native": "2.0.0",
|
|
45
|
-
"@reown/appkit-siwe-react-native": "1.2.4"
|
|
44
|
+
"@reown/appkit-common-react-native": "2.0.1",
|
|
45
|
+
"@reown/appkit-react-native": "2.0.1"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@react-native-async-storage/async-storage": ">=1.17.0",
|
|
49
48
|
"@react-native-community/netinfo": "*",
|
|
50
|
-
"@walletconnect/react-native-compat": ">=2.
|
|
51
|
-
"react": ">=
|
|
52
|
-
"react-native": ">=0.
|
|
49
|
+
"@walletconnect/react-native-compat": ">=2.16.1",
|
|
50
|
+
"react": ">=18",
|
|
51
|
+
"react-native": ">=0.72",
|
|
53
52
|
"react-native-get-random-values": "*",
|
|
54
|
-
"viem": ">=2.
|
|
55
|
-
"wagmi": ">=2.
|
|
56
|
-
},
|
|
57
|
-
"react-native": "src/index.tsx",
|
|
58
|
-
"react-native-builder-bob": {
|
|
59
|
-
"source": "src",
|
|
60
|
-
"output": "lib",
|
|
61
|
-
"targets": [
|
|
62
|
-
"commonjs",
|
|
63
|
-
"module",
|
|
64
|
-
[
|
|
65
|
-
"typescript",
|
|
66
|
-
{
|
|
67
|
-
"tsc": "../../node_modules/.bin/tsc"
|
|
68
|
-
}
|
|
69
|
-
]
|
|
70
|
-
]
|
|
53
|
+
"viem": ">=2 <3.0.0",
|
|
54
|
+
"wagmi": ">=2 <3.0.0"
|
|
71
55
|
},
|
|
72
56
|
"eslintIgnore": [
|
|
73
57
|
"node_modules/",
|
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';
|
|
@@ -33,11 +34,12 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
33
34
|
public wagmiChains: readonly Chain[] | undefined;
|
|
34
35
|
public wagmiConfig!: Config;
|
|
35
36
|
private wagmiConfigConnector?: Connector;
|
|
37
|
+
private unsubscribeWatchAccount?: () => void;
|
|
36
38
|
|
|
37
39
|
constructor(configParams: ConfigParams) {
|
|
38
40
|
super({
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
supportedNamespace: WagmiAdapter.supportedNamespace,
|
|
42
|
+
adapterType: 'wagmi'
|
|
41
43
|
});
|
|
42
44
|
this.wagmiChains = configParams.networks;
|
|
43
45
|
this.wagmiConfig = this.createWagmiInternalConfig(configParams);
|
|
@@ -105,7 +107,7 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
105
107
|
const formattedBalance = {
|
|
106
108
|
amount: formatUnits(balance.value, balance.decimals),
|
|
107
109
|
symbol: balance.symbol,
|
|
108
|
-
|
|
110
|
+
address: token ? (`${network.caipNetworkId}:${token}` as CaipAddress) : undefined
|
|
109
111
|
};
|
|
110
112
|
|
|
111
113
|
this.emit('balanceChanged', { address: balanceAddress, balance: formattedBalance });
|
|
@@ -130,6 +132,11 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
async disconnect(): Promise<void> {
|
|
135
|
+
if (this.unsubscribeWatchAccount) {
|
|
136
|
+
this.unsubscribeWatchAccount();
|
|
137
|
+
this.unsubscribeWatchAccount = undefined;
|
|
138
|
+
}
|
|
139
|
+
|
|
133
140
|
if (this.wagmiConfigConnector) {
|
|
134
141
|
await disconnectWagmiCore(this.wagmiConfig, { connector: this.wagmiConfigConnector });
|
|
135
142
|
this.wagmiConfigConnector = undefined;
|
|
@@ -148,8 +155,14 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
148
155
|
return WagmiAdapter.supportedNamespace;
|
|
149
156
|
}
|
|
150
157
|
|
|
151
|
-
|
|
152
|
-
|
|
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
|
+
|
|
164
|
+
override init({ connector: _connector }: BlockchainAdapterInitParams): void {
|
|
165
|
+
super.init({ connector: _connector });
|
|
153
166
|
|
|
154
167
|
if (_connector && this.wagmiChains) {
|
|
155
168
|
if (!this.wagmiConfigConnector) {
|
|
@@ -176,5 +189,39 @@ export class WagmiAdapter extends EVMAdapter {
|
|
|
176
189
|
}
|
|
177
190
|
}
|
|
178
191
|
}
|
|
192
|
+
|
|
193
|
+
this.setupWatchers();
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
setupWatchers() {
|
|
197
|
+
// Clean up existing subscription if any
|
|
198
|
+
this.unsubscribeWatchAccount?.();
|
|
199
|
+
|
|
200
|
+
this.unsubscribeWatchAccount = watchAccount(this.wagmiConfig, {
|
|
201
|
+
onChange: (accountData, prevAccountData) => {
|
|
202
|
+
if (!this.connector) return;
|
|
203
|
+
|
|
204
|
+
// Handle disconnect
|
|
205
|
+
if (accountData.status === 'disconnected' && prevAccountData.address) {
|
|
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]);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Handle chain changes
|
|
221
|
+
if (accountData?.chainId && accountData.chainId !== prevAccountData?.chainId) {
|
|
222
|
+
this.onChainChanged(accountData.chainId?.toString());
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
});
|
|
179
226
|
}
|
|
180
227
|
}
|