@reown/appkit-wagmi-react-native 0.0.0-develop-20240925193922 → 0.0.0-refactor-modal-migration-20241003185737

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.
Files changed (31) hide show
  1. package/package.json +5 -5
  2. package/lib/commonjs/client.js +0 -469
  3. package/lib/commonjs/client.js.map +0 -1
  4. package/lib/commonjs/connectors/WalletConnectConnector.js +0 -353
  5. package/lib/commonjs/connectors/WalletConnectConnector.js.map +0 -1
  6. package/lib/commonjs/index.js +0 -126
  7. package/lib/commonjs/index.js.map +0 -1
  8. package/lib/commonjs/utils/defaultWagmiConfig.js +0 -46
  9. package/lib/commonjs/utils/defaultWagmiConfig.js.map +0 -1
  10. package/lib/commonjs/utils/helpers.js +0 -63
  11. package/lib/commonjs/utils/helpers.js.map +0 -1
  12. package/lib/module/client.js +0 -461
  13. package/lib/module/client.js.map +0 -1
  14. package/lib/module/connectors/WalletConnectConnector.js +0 -348
  15. package/lib/module/connectors/WalletConnectConnector.js.map +0 -1
  16. package/lib/module/index.js +0 -81
  17. package/lib/module/index.js.map +0 -1
  18. package/lib/module/utils/defaultWagmiConfig.js +0 -40
  19. package/lib/module/utils/defaultWagmiConfig.js.map +0 -1
  20. package/lib/module/utils/helpers.js +0 -53
  21. package/lib/module/utils/helpers.js.map +0 -1
  22. package/lib/typescript/client.d.ts +0 -39
  23. package/lib/typescript/client.d.ts.map +0 -1
  24. package/lib/typescript/connectors/WalletConnectConnector.d.ts +0 -74
  25. package/lib/typescript/connectors/WalletConnectConnector.d.ts.map +0 -1
  26. package/lib/typescript/index.d.ts +0 -24
  27. package/lib/typescript/index.d.ts.map +0 -1
  28. package/lib/typescript/utils/defaultWagmiConfig.d.ts +0 -11
  29. package/lib/typescript/utils/defaultWagmiConfig.d.ts.map +0 -1
  30. package/lib/typescript/utils/helpers.d.ts +0 -18
  31. package/lib/typescript/utils/helpers.d.ts.map +0 -1
@@ -1,461 +0,0 @@
1
- import { formatUnits, parseUnits } from 'viem';
2
- import { connect, disconnect, signMessage, getAccount, switchChain, watchAccount, watchConnectors, getEnsName, getEnsAvatar as wagmiGetEnsAvatar, getEnsAddress as wagmiGetEnsAddress, getBalance, prepareTransactionRequest, sendTransaction as wagmiSendTransaction, waitForTransactionReceipt, writeContract as wagmiWriteContract } from '@wagmi/core';
3
- import { normalize } from 'viem/ens';
4
- import { mainnet } from '@wagmi/core/chains';
5
- import { OPTIONAL_METHODS } from '@walletconnect/ethereum-provider';
6
- import { AppKitScaffold } from '@reown/appkit-scaffold-react-native';
7
- import { ConstantsUtil, HelpersUtil, PresetsUtil, StorageUtil } from '@reown/appkit-scaffold-utils-react-native';
8
- import { NetworkUtil, NamesUtil } from '@reown/appkit-common-react-native';
9
- import { getCaipDefaultChain, getAuthCaipNetworks, getWalletConnectCaipNetworks, requireCaipAddress } from './utils/helpers';
10
-
11
- // -- Types ---------------------------------------------------------------------
12
-
13
- // @ts-expect-error: Overriden state type is correct
14
-
15
- // -- Client --------------------------------------------------------------------
16
- export class AppKit extends AppKitScaffold {
17
- hasSyncedConnectedAccount = false;
18
- options = undefined;
19
- constructor(options) {
20
- const {
21
- wagmiConfig,
22
- siweConfig,
23
- defaultChain,
24
- tokens,
25
- _sdkVersion,
26
- ...appKitOptions
27
- } = options;
28
- if (!wagmiConfig) {
29
- throw new Error('appkit:constructor - wagmiConfig is undefined');
30
- }
31
- if (!appKitOptions.projectId) {
32
- throw new Error('appkit:constructor - projectId is undefined');
33
- }
34
- const networkControllerClient = {
35
- switchCaipNetwork: async caipNetwork => {
36
- const chainId = NetworkUtil.caipNetworkIdToNumber(caipNetwork?.id);
37
- if (chainId) {
38
- await switchChain(wagmiConfig, {
39
- chainId
40
- });
41
- }
42
- },
43
- async getApprovedCaipNetworksData() {
44
- const walletChoice = await StorageUtil.getConnectedConnector();
45
- const walletConnectType = PresetsUtil.ConnectorTypesMap[ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID];
46
- const authType = PresetsUtil.ConnectorTypesMap[ConstantsUtil.AUTH_CONNECTOR_ID];
47
- if (walletChoice?.includes(walletConnectType)) {
48
- const connector = wagmiConfig.connectors.find(c => c.id === ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID);
49
- return getWalletConnectCaipNetworks(connector);
50
- } else if (authType) {
51
- return getAuthCaipNetworks();
52
- }
53
- return {
54
- approvedCaipNetworkIds: undefined,
55
- supportsAllNetworks: true
56
- };
57
- }
58
- };
59
- const connectionControllerClient = {
60
- connectWalletConnect: async (onUri, walletUniversalLink) => {
61
- const connector = wagmiConfig.connectors.find(c => c.id === ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID);
62
- if (!connector) {
63
- throw new Error('connectionControllerClient:getWalletConnectUri - connector is undefined');
64
- }
65
- const provider = await connector.getProvider();
66
- provider.on('display_uri', data => {
67
- onUri(data);
68
- });
69
-
70
- // When connecting through walletconnect, we need to set the clientId in the store
71
- const clientId = await provider.signer?.client?.core?.crypto?.getClientId();
72
- if (clientId) {
73
- this.setClientId(clientId);
74
- }
75
- const chainId = NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id);
76
-
77
- // SIWE
78
- const siweParams = await siweConfig?.getMessageParams?.();
79
- // Make sure client uses ethereum provider version that supports `authenticate`
80
- if (siweConfig?.options?.enabled && typeof provider?.authenticate === 'function' && siweParams && Object.keys(siweParams || {}).length > 0) {
81
- const {
82
- SIWEController,
83
- getDidChainId,
84
- getDidAddress
85
- } = await import('@reown/appkit-siwe-react-native');
86
- // @ts-expect-error - setting requested chains beforehand avoids wagmi auto disconnecting the session when `connect` is called because it things chains are stale
87
- await connector.setRequestedChainsIds(siweParams.chains);
88
- const result = await provider.authenticate({
89
- nonce: await siweConfig.getNonce(),
90
- methods: [...OPTIONAL_METHODS],
91
- ...siweParams
92
- }, walletUniversalLink);
93
-
94
- // Auths is an array of signed CACAO objects https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-74.md
95
- const signedCacao = result?.auths?.[0];
96
- if (signedCacao) {
97
- const {
98
- p,
99
- s
100
- } = signedCacao;
101
- const cacaoChainId = getDidChainId(p.iss) || '';
102
- const address = getDidAddress(p.iss);
103
- try {
104
- // Kicks off verifyMessage and populates external states
105
- const message = provider.signer.client.formatAuthMessage({
106
- request: p,
107
- iss: p.iss
108
- });
109
- await SIWEController.verifyMessage({
110
- message,
111
- signature: s.s,
112
- cacao: signedCacao
113
- });
114
- if (address && chainId) {
115
- const session = {
116
- address,
117
- chainId: parseInt(cacaoChainId, 10)
118
- };
119
- SIWEController.setSession(session);
120
- SIWEController.onSignIn?.(session);
121
- }
122
- } catch (error) {
123
- // eslint-disable-next-line no-console
124
- console.error('Error verifying message', error);
125
- // eslint-disable-next-line no-console
126
- await provider.disconnect().catch(console.error);
127
- // eslint-disable-next-line no-console
128
- await SIWEController.signOut().catch(console.error);
129
- throw error;
130
- }
131
- /*
132
- * Unassign the connector from the wagmiConfig and allow connect() to reassign it in the next step
133
- * this avoids case where wagmi throws because the connector is already connected
134
- * what we need connect() to do is to only setup internal event listeners
135
- */
136
- this.wagmiConfig.state.current = '';
137
- }
138
- }
139
- await connect(this.wagmiConfig, {
140
- connector,
141
- chainId
142
- });
143
- },
144
- connectExternal: async ({
145
- id
146
- }) => {
147
- const connector = wagmiConfig.connectors.find(c => c.id === id);
148
- if (!connector) {
149
- throw new Error('connectionControllerClient:connectExternal - connector is undefined');
150
- }
151
-
152
- // If connecting with something else than walletconnect, we need to clear the clientId in the store
153
- this.setClientId(null);
154
- const chainId = NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id);
155
- await connect(this.wagmiConfig, {
156
- connector,
157
- chainId
158
- });
159
- },
160
- signMessage: async message => signMessage(this.wagmiConfig, {
161
- message
162
- }),
163
- disconnect: async () => {
164
- await disconnect(this.wagmiConfig);
165
- this.setClientId(null);
166
- if (siweConfig?.options?.signOutOnDisconnect) {
167
- const {
168
- SIWEController
169
- } = await import('@reown/appkit-siwe-react-native');
170
- await SIWEController.signOut();
171
- }
172
- },
173
- sendTransaction: async data => {
174
- const {
175
- chainId
176
- } = getAccount(this.wagmiConfig);
177
- const txParams = {
178
- account: data.address,
179
- to: data.to,
180
- value: data.value,
181
- gas: data.gas,
182
- gasPrice: data.gasPrice,
183
- data: data.data,
184
- chainId,
185
- type: 'legacy'
186
- };
187
- await prepareTransactionRequest(this.wagmiConfig, txParams);
188
- const tx = await wagmiSendTransaction(this.wagmiConfig, txParams);
189
- await waitForTransactionReceipt(this.wagmiConfig, {
190
- hash: tx,
191
- timeout: 25000
192
- });
193
- return tx;
194
- },
195
- writeContract: async data => {
196
- const caipAddress = this.getCaipAddress() || '';
197
- const account = requireCaipAddress(caipAddress);
198
- const chainId = NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id);
199
- const tx = await wagmiWriteContract(wagmiConfig, {
200
- chainId,
201
- address: data.tokenAddress,
202
- account,
203
- abi: data.abi,
204
- functionName: data.method,
205
- args: [data.receiverAddress, data.tokenAmount]
206
- });
207
- return tx;
208
- },
209
- parseUnits,
210
- formatUnits,
211
- getEnsAddress: async value => {
212
- try {
213
- if (!this.wagmiConfig) {
214
- throw new Error('networkControllerClient:getApprovedCaipNetworksData - wagmiConfig is undefined');
215
- }
216
- const chainId = Number(NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id));
217
- let ensName = false;
218
- let wcName = false;
219
- if (NamesUtil.isReownName(value)) {
220
- wcName = (await this.resolveReownName(value)) || false;
221
- }
222
- if (chainId === 1) {
223
- ensName = await wagmiGetEnsAddress(this.wagmiConfig, {
224
- name: normalize(value),
225
- chainId
226
- });
227
- }
228
- return ensName || wcName || false;
229
- } catch {
230
- return false;
231
- }
232
- },
233
- getEnsAvatar: async value => {
234
- const chainId = Number(NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id));
235
- if (chainId !== mainnet.id) {
236
- return false;
237
- }
238
- const avatar = await wagmiGetEnsAvatar(this.wagmiConfig, {
239
- name: normalize(value),
240
- chainId
241
- });
242
- return avatar || false;
243
- }
244
- };
245
- super({
246
- networkControllerClient,
247
- connectionControllerClient,
248
- siweControllerClient: siweConfig,
249
- defaultChain: getCaipDefaultChain(defaultChain),
250
- tokens: HelpersUtil.getCaipTokens(tokens),
251
- _sdkVersion: _sdkVersion ?? `react-native-wagmi-${ConstantsUtil.VERSION}`,
252
- ...appKitOptions
253
- });
254
- this.options = options;
255
- this.wagmiConfig = wagmiConfig;
256
- this.syncRequestedNetworks([...wagmiConfig.chains]);
257
- this.syncConnectors([...wagmiConfig.connectors]);
258
- this.listenAuthConnector([...wagmiConfig.connectors]);
259
- watchConnectors(wagmiConfig, {
260
- onChange: connectors => this.syncConnectors([...connectors])
261
- });
262
- watchAccount(wagmiConfig, {
263
- onChange: accountData => {
264
- this.syncAccount({
265
- ...accountData
266
- });
267
- }
268
- });
269
- }
270
-
271
- // -- Public ------------------------------------------------------------------
272
-
273
- // @ts-expect-error: Overriden state type is correct
274
- getState() {
275
- const state = super.getState();
276
- return {
277
- ...state,
278
- selectedNetworkId: NetworkUtil.caipNetworkIdToNumber(state.selectedNetworkId)
279
- };
280
- }
281
-
282
- // @ts-expect-error: Overriden state type is correct
283
- subscribeState(callback) {
284
- return super.subscribeState(state => callback({
285
- ...state,
286
- selectedNetworkId: NetworkUtil.caipNetworkIdToNumber(state.selectedNetworkId)
287
- }));
288
- }
289
-
290
- // -- Private -----------------------------------------------------------------
291
- syncRequestedNetworks(chains) {
292
- const requestedCaipNetworks = chains?.map(chain => ({
293
- id: `${ConstantsUtil.EIP155}:${chain.id}`,
294
- name: chain.name,
295
- imageId: PresetsUtil.EIP155NetworkImageIds[chain.id],
296
- imageUrl: this.options?.chainImages?.[chain.id]
297
- }));
298
- this.setRequestedCaipNetworks(requestedCaipNetworks ?? []);
299
- }
300
- async syncAccount({
301
- address,
302
- isConnected,
303
- chainId,
304
- connector,
305
- isConnecting,
306
- isReconnecting
307
- }) {
308
- this.resetAccount();
309
- this.syncNetwork(address, chainId, isConnected);
310
- this.setLoading(!!connector && (isConnecting || isReconnecting));
311
- if (isConnected && address && chainId) {
312
- const caipAddress = `${ConstantsUtil.EIP155}:${chainId}:${address}`;
313
- this.setIsConnected(isConnected);
314
- this.setCaipAddress(caipAddress);
315
- await Promise.all([this.syncProfile(address, chainId), this.syncBalance(address, chainId), this.syncConnectedWalletInfo(connector), this.getApprovedCaipNetworksData()]);
316
- this.hasSyncedConnectedAccount = true;
317
- } else if (!isConnected && this.hasSyncedConnectedAccount) {
318
- this.resetWcConnection();
319
- this.resetNetwork();
320
- }
321
- }
322
- async syncNetwork(address, chainId, isConnected) {
323
- const chain = this.wagmiConfig.chains.find(c => c.id === chainId);
324
- if (chain || chainId) {
325
- const name = chain?.name ?? chainId?.toString();
326
- const id = Number(chain?.id ?? chainId);
327
- const caipChainId = `${ConstantsUtil.EIP155}:${id}`;
328
- this.setCaipNetwork({
329
- id: caipChainId,
330
- name,
331
- imageId: PresetsUtil.EIP155NetworkImageIds[id],
332
- imageUrl: this.options?.chainImages?.[id]
333
- });
334
- if (isConnected && address && chainId) {
335
- const caipAddress = `${ConstantsUtil.EIP155}:${id}:${address}`;
336
- this.setCaipAddress(caipAddress);
337
- if (chain?.blockExplorers?.default?.url) {
338
- const url = `${chain.blockExplorers.default.url}/address/${address}`;
339
- this.setAddressExplorerUrl(url);
340
- } else {
341
- this.setAddressExplorerUrl(undefined);
342
- }
343
- if (this.hasSyncedConnectedAccount) {
344
- await this.syncProfile(address, chainId);
345
- await this.syncBalance(address, chainId);
346
- }
347
- }
348
- }
349
- }
350
- async syncProfile(address, chainId) {
351
- try {
352
- const response = await this.fetchIdentity({
353
- address
354
- });
355
- if (!response) {
356
- throw new Error('Couldnt fetch idendity');
357
- }
358
- this.setProfileName(response.name);
359
- this.setProfileImage(response.avatar);
360
- } catch {
361
- if (chainId === mainnet.id) {
362
- const profileName = await getEnsName(this.wagmiConfig, {
363
- address,
364
- chainId
365
- });
366
- if (profileName) {
367
- this.setProfileName(profileName);
368
- const profileImage = await wagmiGetEnsAvatar(this.wagmiConfig, {
369
- name: profileName,
370
- chainId
371
- });
372
- if (profileImage) {
373
- this.setProfileImage(profileImage);
374
- }
375
- }
376
- } else {
377
- this.setProfileName(undefined);
378
- this.setProfileImage(undefined);
379
- }
380
- }
381
- }
382
- async syncBalance(address, chainId) {
383
- const chain = this.wagmiConfig.chains.find(c => c.id === chainId);
384
- if (chain) {
385
- const balance = await getBalance(this.wagmiConfig, {
386
- address,
387
- chainId: chain.id
388
- });
389
- const formattedBalance = formatUnits(balance.value, balance.decimals);
390
- this.setBalance(formattedBalance, balance.symbol);
391
- return;
392
- }
393
- this.setBalance(undefined, undefined);
394
- }
395
- async syncConnectedWalletInfo(connector) {
396
- if (!connector) {
397
- throw Error('syncConnectedWalletInfo - connector is undefined');
398
- }
399
- if (connector.id === ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID && connector.getProvider) {
400
- const walletConnectProvider = await connector.getProvider();
401
- if (walletConnectProvider.session) {
402
- this.setConnectedWalletInfo({
403
- ...walletConnectProvider.session.peer.metadata,
404
- name: walletConnectProvider.session.peer.metadata.name,
405
- icon: walletConnectProvider.session.peer.metadata.icons?.[0]
406
- });
407
- }
408
- } else {
409
- this.setConnectedWalletInfo({
410
- name: connector.name,
411
- icon: connector.icon
412
- });
413
- }
414
- }
415
- syncConnectors(connectors) {
416
- const uniqueIds = new Set();
417
- const filteredConnectors = connectors.filter(item => !uniqueIds.has(item.id) && uniqueIds.add(item.id));
418
- const excludedConnectors = [ConstantsUtil.AUTH_CONNECTOR_ID];
419
- const _connectors = [];
420
- filteredConnectors.forEach(({
421
- id,
422
- name,
423
- icon
424
- }) => {
425
- if (!excludedConnectors.includes(id)) {
426
- _connectors.push({
427
- id,
428
- explorerId: PresetsUtil.ConnectorExplorerIds[id],
429
- imageId: PresetsUtil.ConnectorImageIds[id] ?? icon,
430
- imageUrl: this.options?.connectorImages?.[id],
431
- name: PresetsUtil.ConnectorNamesMap[id] ?? name,
432
- type: PresetsUtil.ConnectorTypesMap[id] ?? 'EXTERNAL'
433
- });
434
- }
435
- });
436
- this.setConnectors(_connectors);
437
- this.syncAuthConnector(filteredConnectors);
438
- }
439
- async syncAuthConnector(connectors) {
440
- const authConnector = connectors.find(({
441
- id
442
- }) => id === ConstantsUtil.AUTH_CONNECTOR_ID);
443
- if (authConnector) {
444
- const provider = await authConnector.getProvider();
445
- this.addConnector({
446
- id: ConstantsUtil.AUTH_CONNECTOR_ID,
447
- type: 'AUTH',
448
- name: 'Auth',
449
- provider
450
- });
451
- }
452
- }
453
- async listenAuthConnector(connectors) {
454
- const connector = connectors.find(c => c.id === ConstantsUtil.AUTH_CONNECTOR_ID);
455
- const connectedConnector = await StorageUtil.getItem('@w3m/connected_connector');
456
- if (connector && connectedConnector === 'AUTH') {
457
- super.setLoading(true);
458
- }
459
- }
460
- }
461
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["formatUnits","parseUnits","connect","disconnect","signMessage","getAccount","switchChain","watchAccount","watchConnectors","getEnsName","getEnsAvatar","wagmiGetEnsAvatar","getEnsAddress","wagmiGetEnsAddress","getBalance","prepareTransactionRequest","sendTransaction","wagmiSendTransaction","waitForTransactionReceipt","writeContract","wagmiWriteContract","normalize","mainnet","OPTIONAL_METHODS","AppKitScaffold","ConstantsUtil","HelpersUtil","PresetsUtil","StorageUtil","NetworkUtil","NamesUtil","getCaipDefaultChain","getAuthCaipNetworks","getWalletConnectCaipNetworks","requireCaipAddress","AppKit","hasSyncedConnectedAccount","options","undefined","constructor","wagmiConfig","siweConfig","defaultChain","tokens","_sdkVersion","appKitOptions","Error","projectId","networkControllerClient","switchCaipNetwork","caipNetwork","chainId","caipNetworkIdToNumber","id","getApprovedCaipNetworksData","walletChoice","getConnectedConnector","walletConnectType","ConnectorTypesMap","WALLET_CONNECT_CONNECTOR_ID","authType","AUTH_CONNECTOR_ID","includes","connector","connectors","find","c","approvedCaipNetworkIds","supportsAllNetworks","connectionControllerClient","connectWalletConnect","onUri","walletUniversalLink","provider","getProvider","on","data","clientId","signer","client","core","crypto","getClientId","setClientId","getCaipNetwork","siweParams","getMessageParams","enabled","authenticate","Object","keys","length","SIWEController","getDidChainId","getDidAddress","setRequestedChainsIds","chains","result","nonce","getNonce","methods","signedCacao","auths","p","s","cacaoChainId","iss","address","message","formatAuthMessage","request","verifyMessage","signature","cacao","session","parseInt","setSession","onSignIn","error","console","catch","signOut","state","current","connectExternal","signOutOnDisconnect","txParams","account","to","value","gas","gasPrice","type","tx","hash","timeout","caipAddress","getCaipAddress","tokenAddress","abi","functionName","method","args","receiverAddress","tokenAmount","Number","ensName","wcName","isReownName","resolveReownName","name","avatar","siweControllerClient","getCaipTokens","VERSION","syncRequestedNetworks","syncConnectors","listenAuthConnector","onChange","accountData","syncAccount","getState","selectedNetworkId","subscribeState","callback","requestedCaipNetworks","map","chain","EIP155","imageId","EIP155NetworkImageIds","imageUrl","chainImages","setRequestedCaipNetworks","isConnected","isConnecting","isReconnecting","resetAccount","syncNetwork","setLoading","setIsConnected","setCaipAddress","Promise","all","syncProfile","syncBalance","syncConnectedWalletInfo","resetWcConnection","resetNetwork","toString","caipChainId","setCaipNetwork","blockExplorers","default","url","setAddressExplorerUrl","response","fetchIdentity","setProfileName","setProfileImage","profileName","profileImage","balance","formattedBalance","decimals","setBalance","symbol","walletConnectProvider","setConnectedWalletInfo","peer","metadata","icon","icons","uniqueIds","Set","filteredConnectors","filter","item","has","add","excludedConnectors","_connectors","forEach","push","explorerId","ConnectorExplorerIds","ConnectorImageIds","connectorImages","ConnectorNamesMap","setConnectors","syncAuthConnector","authConnector","addConnector","connectedConnector","getItem"],"sourceRoot":"../../src","sources":["client.ts"],"mappings":"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"}