@reown/appkit-wagmi-react-native 0.0.0-feat-multi-siwe-20250623145640 → 0.0.0-feat-onramp-20250625192635

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 (50) hide show
  1. package/lib/commonjs/client.js +516 -0
  2. package/lib/commonjs/client.js.map +1 -0
  3. package/lib/commonjs/connectors/WalletConnectConnector.js +355 -0
  4. package/lib/commonjs/connectors/WalletConnectConnector.js.map +1 -0
  5. package/lib/commonjs/index.js +121 -8
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/utils/defaultWagmiConfig.js +46 -0
  8. package/lib/commonjs/utils/defaultWagmiConfig.js.map +1 -0
  9. package/lib/commonjs/utils/helpers.js +44 -16
  10. package/lib/commonjs/utils/helpers.js.map +1 -1
  11. package/lib/module/client.js +510 -0
  12. package/lib/module/client.js.map +1 -0
  13. package/lib/module/connectors/WalletConnectConnector.js +350 -0
  14. package/lib/module/connectors/WalletConnectConnector.js.map +1 -0
  15. package/lib/module/index.js +92 -3
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/utils/defaultWagmiConfig.js +40 -0
  18. package/lib/module/utils/defaultWagmiConfig.js.map +1 -0
  19. package/lib/module/utils/helpers.js +39 -13
  20. package/lib/module/utils/helpers.js.map +1 -1
  21. package/lib/typescript/client.d.ts +40 -0
  22. package/lib/typescript/client.d.ts.map +1 -0
  23. package/lib/typescript/connectors/WalletConnectConnector.d.ts +74 -0
  24. package/lib/typescript/connectors/WalletConnectConnector.d.ts.map +1 -0
  25. package/lib/typescript/index.d.ts +24 -3
  26. package/lib/typescript/index.d.ts.map +1 -1
  27. package/lib/typescript/utils/defaultWagmiConfig.d.ts +11 -0
  28. package/lib/typescript/utils/defaultWagmiConfig.d.ts.map +1 -0
  29. package/lib/typescript/utils/helpers.d.ts +13 -3
  30. package/lib/typescript/utils/helpers.d.ts.map +1 -1
  31. package/package.json +5 -5
  32. package/src/client.ts +644 -0
  33. package/src/connectors/WalletConnectConnector.ts +472 -0
  34. package/src/index.tsx +121 -3
  35. package/src/utils/defaultWagmiConfig.ts +53 -0
  36. package/src/utils/helpers.ts +56 -17
  37. package/lib/commonjs/adapter.js +0 -143
  38. package/lib/commonjs/adapter.js.map +0 -1
  39. package/lib/commonjs/connectors/UniversalConnector.js +0 -214
  40. package/lib/commonjs/connectors/UniversalConnector.js.map +0 -1
  41. package/lib/module/adapter.js +0 -136
  42. package/lib/module/adapter.js.map +0 -1
  43. package/lib/module/connectors/UniversalConnector.js +0 -208
  44. package/lib/module/connectors/UniversalConnector.js.map +0 -1
  45. package/lib/typescript/adapter.d.ts +0 -24
  46. package/lib/typescript/adapter.d.ts.map +0 -1
  47. package/lib/typescript/connectors/UniversalConnector.d.ts +0 -5
  48. package/lib/typescript/connectors/UniversalConnector.d.ts.map +0 -1
  49. package/src/adapter.ts +0 -180
  50. package/src/connectors/UniversalConnector.ts +0 -228
@@ -1 +1 @@
1
- {"version":3,"names":["_appkitReactNative","require","_appkitCommonReactNative","_viem","getTransport","chainId","projectId","RPC_URL","CoreHelperUtil","getBlockchainApiUrl","PresetsUtil","RpcChainIds","includes","http","ConstantsUtil","EIP155","formatNetwork","network","rpcUrls","chainNamespace","caipNetworkId","id","formatNetworks","networks","map"],"sourceRoot":"../../../src","sources":["utils/helpers.ts"],"mappings":";;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAMA,IAAAE,KAAA,GAAAF,OAAA;AAEO,SAASG,YAAYA,CAAC;EAAEC,OAAO;EAAEC;AAAkD,CAAC,EAAE;EAC3F,MAAMC,OAAO,GAAGC,iCAAc,CAACC,mBAAmB,CAAC,CAAC;EAEpD,IAAI,CAACC,oCAAW,CAACC,WAAW,CAACC,QAAQ,CAACP,OAAO,CAAC,EAAE;IAC9C,OAAO,IAAAQ,UAAI,EAAC,CAAC;EACf;EAEA,OAAO,IAAAA,UAAI,EAAE,GAAEN,OAAQ,gBAAeO,sCAAa,CAACC,MAAO,IAAGV,OAAQ,cAAaC,SAAU,EAAC,CAAC;AACjG;AAEO,SAASU,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,EAAG,UAASH,OAAO,CAACI,EAAG;EACtC,CAAC;AACH;AAEO,SAASC,cAAcA,CAACC,QAAmB,EAAmB;EACnE,OAAOA,QAAQ,CAACC,GAAG,CAACR,aAAa,CAAC;AACpC"}
1
+ {"version":3,"names":["_appkitScaffoldReactNative","require","_appkitCommonReactNative","_viem","getCaipDefaultChain","chain","undefined","id","ConstantsUtil","EIP155","name","imageId","PresetsUtil","EIP155NetworkImageIds","getWalletConnectCaipNetworks","connector","Error","provider","getProvider","ns","signer","session","namespaces","nsMethods","methods","nsChains","chains","supportsAllNetworks","Boolean","includes","ADD_CHAIN_METHOD","approvedCaipNetworkIds","getAuthCaipNetworks","RpcChainIds","map","getTransport","chainId","projectId","RPC_URL","CoreHelperUtil","getBlockchainApiUrl","http","requireCaipAddress","caipAddress","account","split"],"sourceRoot":"../../../src","sources":["utils/helpers.ts"],"mappings":";;;;;;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAKA,IAAAC,wBAAA,GAAAD,OAAA;AAIA,IAAAE,KAAA,GAAAF,OAAA;AAEO,SAASG,mBAAmBA,CAACC,KAA2C,EAAE;EAC/E,IAAI,CAACA,KAAK,EAAE;IACV,OAAOC,SAAS;EAClB;EAEA,OAAO;IACLC,EAAE,EAAG,GAAEC,sCAAa,CAACC,MAAO,IAAGJ,KAAK,CAACE,EAAG,EAAC;IACzCG,IAAI,EAAEL,KAAK,CAACK,IAAI;IAChBC,OAAO,EAAEC,oCAAW,CAACC,qBAAqB,CAACR,KAAK,CAACE,EAAE;EACrD,CAAC;AACH;AAEO,eAAeO,4BAA4BA,CAACC,SAAqB,EAAE;EACxE,IAAI,CAACA,SAAS,EAAE;IACd,MAAM,IAAIC,KAAK,CAAC,0EAA0E,CAAC;EAC7F;EACA,MAAMC,QAAQ,GAAI,MAAMF,SAAS,EAAEG,WAAW,CAAC,CAE9C;EACD,MAAMC,EAAE,GAAGF,QAAQ,EAAEG,MAAM,EAAEC,OAAO,EAAEC,UAAU;EAChD,MAAMC,SAAS,GAAGJ,EAAE,GAAGX,sCAAa,CAACC,MAAM,CAAC,EAAEe,OAAO;EACrD,MAAMC,QAAQ,GAAGN,EAAE,GAAGX,sCAAa,CAACC,MAAM,CAAC,EAAEiB,MAAyB;EAEtE,OAAO;IACLC,mBAAmB,EAAEC,OAAO,CAACL,SAAS,EAAEM,QAAQ,CAACrB,sCAAa,CAACsB,gBAAgB,CAAC,CAAC;IACjFC,sBAAsB,EAAEN;EAC1B,CAAC;AACH;AAEO,SAASO,mBAAmBA,CAAA,EAAG;EACpC,OAAO;IACLL,mBAAmB,EAAE,KAAK;IAC1BI,sBAAsB,EAAEnB,oCAAW,CAACqB,WAAW,CAACC,GAAG,CACjD3B,EAAE,IAAK,GAAEC,sCAAa,CAACC,MAAO,IAAGF,EAAG,EACtC;EACF,CAAC;AACH;AAEO,SAAS4B,YAAYA,CAAC;EAAEC,OAAO;EAAEC;AAAkD,CAAC,EAAE;EAC3F,MAAMC,OAAO,GAAGC,yCAAc,CAACC,mBAAmB,CAAC,CAAC;EAEpD,IAAI,CAAC5B,oCAAW,CAACqB,WAAW,CAACJ,QAAQ,CAACO,OAAO,CAAC,EAAE;IAC9C,OAAO,IAAAK,UAAI,EAAC,CAAC;EACf;EAEA,OAAO,IAAAA,UAAI,EAAE,GAAEH,OAAQ,gBAAe9B,sCAAa,CAACC,MAAO,IAAG2B,OAAQ,cAAaC,SAAU,EAAC,CAAC;AACjG;AAEO,SAASK,kBAAkBA,CAACC,WAAmB,EAAE;EACtD,IAAI,CAACA,WAAW,EAAE;IAChB,MAAM,IAAI3B,KAAK,CAAC,0BAA0B,CAAC;EAC7C;EACA,MAAM4B,OAAO,GAAGD,WAAW,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAQ;EAChD,IAAI,CAACD,OAAO,EAAE;IACZ,MAAM,IAAI5B,KAAK,CAAC,sBAAsB,CAAC;EACzC;EAEA,OAAO4B,OAAO;AAChB"}
@@ -0,0 +1,510 @@
1
+ import { formatUnits, parseUnits } from 'viem';
2
+ import { connect, reconnect, disconnect, signMessage, getAccount, switchChain, watchAccount, watchConnectors, getEnsName, getEnsAvatar as wagmiGetEnsAvatar, getEnsAddress as wagmiGetEnsAddress, getBalance, prepareTransactionRequest, estimateGas as wagmiEstimateGas, 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 { HelpersUtil, StorageUtil } from '@reown/appkit-scaffold-utils-react-native';
8
+ import { NetworkUtil, NamesUtil, ErrorUtil, ConstantsUtil, PresetsUtil } from '@reown/appkit-common-react-native';
9
+ import { SIWEController, getDidChainId, getDidAddress } from '@reown/appkit-siwe-react-native';
10
+ import { getCaipDefaultChain, getAuthCaipNetworks, getWalletConnectCaipNetworks, requireCaipAddress } from './utils/helpers';
11
+
12
+ // -- Types ---------------------------------------------------------------------
13
+
14
+ // @ts-expect-error: Overriden state type is correct
15
+
16
+ // -- Client --------------------------------------------------------------------
17
+ export class AppKit extends AppKitScaffold {
18
+ hasSyncedConnectedAccount = false;
19
+ options = undefined;
20
+ constructor(options) {
21
+ const {
22
+ wagmiConfig,
23
+ siweConfig,
24
+ defaultChain,
25
+ tokens,
26
+ _sdkVersion,
27
+ ...appKitOptions
28
+ } = options;
29
+ if (!wagmiConfig) {
30
+ throw new Error('appkit:constructor - wagmiConfig is undefined');
31
+ }
32
+ if (!appKitOptions.projectId) {
33
+ throw new Error(ErrorUtil.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED.shortMessage);
34
+ }
35
+ const networkControllerClient = {
36
+ switchCaipNetwork: async caipNetwork => {
37
+ const chainId = NetworkUtil.caipNetworkIdToNumber(caipNetwork?.id);
38
+ if (chainId) {
39
+ await switchChain(wagmiConfig, {
40
+ chainId
41
+ });
42
+ }
43
+ },
44
+ async getApprovedCaipNetworksData() {
45
+ const walletChoice = await StorageUtil.getConnectedConnector();
46
+ const walletConnectType = PresetsUtil.ConnectorTypesMap[ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID];
47
+ const authType = PresetsUtil.ConnectorTypesMap[ConstantsUtil.AUTH_CONNECTOR_ID];
48
+ if (walletChoice?.includes(walletConnectType)) {
49
+ const connector = wagmiConfig.connectors.find(c => c.id === ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID);
50
+ return getWalletConnectCaipNetworks(connector);
51
+ } else if (authType) {
52
+ return getAuthCaipNetworks();
53
+ }
54
+ return {
55
+ approvedCaipNetworkIds: undefined,
56
+ supportsAllNetworks: true
57
+ };
58
+ }
59
+ };
60
+ const connectionControllerClient = {
61
+ connectWalletConnect: async (onUri, walletUniversalLink) => {
62
+ const connector = wagmiConfig.connectors.find(c => c.id === ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID);
63
+ if (!connector) {
64
+ throw new Error('connectionControllerClient:getWalletConnectUri - connector is undefined');
65
+ }
66
+ const provider = await connector.getProvider();
67
+ provider.on('display_uri', data => {
68
+ onUri(data);
69
+ });
70
+
71
+ // When connecting through walletconnect, we need to set the clientId in the store
72
+ const clientId = await provider.signer?.client?.core?.crypto?.getClientId();
73
+ if (clientId) {
74
+ this.setClientId(clientId);
75
+ }
76
+ const chainId = NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id);
77
+
78
+ // SIWE
79
+ const siweParams = await siweConfig?.getMessageParams?.();
80
+ // Make sure client uses ethereum provider version that supports `authenticate`
81
+ if (siweConfig?.options?.enabled && typeof provider?.authenticate === 'function' && siweParams && Object.keys(siweParams || {}).length > 0) {
82
+ // @ts-expect-error - setting requested chains beforehand avoids wagmi auto disconnecting the session when `connect` is called because it things chains are stale
83
+ await connector.setRequestedChainsIds(siweParams.chains);
84
+ const result = await provider.authenticate({
85
+ nonce: await siweConfig.getNonce(),
86
+ methods: [...OPTIONAL_METHODS],
87
+ ...siweParams
88
+ }, walletUniversalLink);
89
+
90
+ // Auths is an array of signed CACAO objects https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-74.md
91
+ const signedCacao = result?.auths?.[0];
92
+ if (signedCacao) {
93
+ const {
94
+ p,
95
+ s
96
+ } = signedCacao;
97
+ const cacaoChainId = getDidChainId(p.iss) || '';
98
+ const address = getDidAddress(p.iss);
99
+ try {
100
+ // Kicks off verifyMessage and populates external states
101
+ const message = provider.signer.client.formatAuthMessage({
102
+ request: p,
103
+ iss: p.iss
104
+ });
105
+ await SIWEController.verifyMessage({
106
+ message,
107
+ signature: s.s,
108
+ cacao: signedCacao
109
+ });
110
+ if (address && chainId) {
111
+ const session = {
112
+ address,
113
+ chainId: parseInt(cacaoChainId, 10)
114
+ };
115
+ SIWEController.setSession(session);
116
+ SIWEController.onSignIn?.(session);
117
+ }
118
+ } catch (error) {
119
+ // eslint-disable-next-line no-console
120
+ console.error('Error verifying message', error);
121
+ // eslint-disable-next-line no-console
122
+ await provider.disconnect().catch(console.error);
123
+ // eslint-disable-next-line no-console
124
+ await SIWEController.signOut().catch(console.error);
125
+ throw error;
126
+ }
127
+ /*
128
+ * Unassign the connector from the wagmiConfig and allow connect() to reassign it in the next step
129
+ * this avoids case where wagmi throws because the connector is already connected
130
+ * what we need connect() to do is to only setup internal event listeners
131
+ */
132
+ this.wagmiConfig.state.current = '';
133
+ }
134
+ }
135
+ await connect(this.wagmiConfig, {
136
+ connector,
137
+ chainId
138
+ });
139
+ },
140
+ connectExternal: async ({
141
+ id
142
+ }) => {
143
+ const connector = wagmiConfig.connectors.find(c => c.id === id);
144
+ if (!connector) {
145
+ throw new Error('connectionControllerClient:connectExternal - connector is undefined');
146
+ }
147
+
148
+ // If connecting with something else than walletconnect, we need to clear the clientId in the store
149
+ this.setClientId(null);
150
+ const chainId = NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id);
151
+ await connect(this.wagmiConfig, {
152
+ connector,
153
+ chainId
154
+ });
155
+ },
156
+ signMessage: async message => signMessage(this.wagmiConfig, {
157
+ message
158
+ }),
159
+ disconnect: async () => {
160
+ await disconnect(this.wagmiConfig);
161
+ this.setClientId(null);
162
+ if (siweConfig?.options?.signOutOnDisconnect) {
163
+ await SIWEController.signOut();
164
+ }
165
+ },
166
+ sendTransaction: async data => {
167
+ const {
168
+ chainId
169
+ } = getAccount(this.wagmiConfig);
170
+ const txParams = {
171
+ account: data.address,
172
+ to: data.to,
173
+ value: data.value,
174
+ gas: data.gas,
175
+ gasPrice: data.gasPrice,
176
+ data: data.data,
177
+ chainId,
178
+ type: 'legacy'
179
+ };
180
+ await prepareTransactionRequest(this.wagmiConfig, txParams);
181
+ const tx = await wagmiSendTransaction(this.wagmiConfig, txParams);
182
+ await waitForTransactionReceipt(this.wagmiConfig, {
183
+ hash: tx,
184
+ timeout: 25000
185
+ });
186
+ return tx;
187
+ },
188
+ writeContract: async data => {
189
+ const caipAddress = this.getCaipAddress() || '';
190
+ const account = requireCaipAddress(caipAddress);
191
+ const chainId = NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id);
192
+ const tx = await wagmiWriteContract(wagmiConfig, {
193
+ chainId,
194
+ address: data.tokenAddress,
195
+ account,
196
+ abi: data.abi,
197
+ functionName: data.method,
198
+ args: [data.receiverAddress, data.tokenAmount]
199
+ });
200
+ return tx;
201
+ },
202
+ estimateGas: async ({
203
+ address,
204
+ to,
205
+ data,
206
+ chainNamespace
207
+ }) => {
208
+ if (chainNamespace && chainNamespace !== 'eip155') {
209
+ throw new Error('estimateGas - chainNamespace is not eip155');
210
+ }
211
+ try {
212
+ const result = await wagmiEstimateGas(this.wagmiConfig, {
213
+ account: address,
214
+ to: to,
215
+ data: data,
216
+ type: 'legacy'
217
+ });
218
+ return result;
219
+ } catch (error) {
220
+ throw new Error('WagmiAdapter:estimateGas - error estimating gas');
221
+ }
222
+ },
223
+ parseUnits,
224
+ formatUnits,
225
+ getEnsAddress: async value => {
226
+ try {
227
+ if (!this.wagmiConfig) {
228
+ throw new Error('networkControllerClient:getApprovedCaipNetworksData - wagmiConfig is undefined');
229
+ }
230
+ const chainId = Number(NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id));
231
+ let ensName = false;
232
+ let wcName = false;
233
+ if (NamesUtil.isReownName(value)) {
234
+ wcName = (await this.resolveReownName(value)) || false;
235
+ }
236
+ if (chainId === 1) {
237
+ ensName = await wagmiGetEnsAddress(this.wagmiConfig, {
238
+ name: normalize(value),
239
+ chainId
240
+ });
241
+ }
242
+ return ensName || wcName || false;
243
+ } catch {
244
+ return false;
245
+ }
246
+ },
247
+ getEnsAvatar: async value => {
248
+ const chainId = Number(NetworkUtil.caipNetworkIdToNumber(this.getCaipNetwork()?.id));
249
+ if (chainId !== mainnet.id) {
250
+ return false;
251
+ }
252
+ const avatar = await wagmiGetEnsAvatar(this.wagmiConfig, {
253
+ name: normalize(value),
254
+ chainId
255
+ });
256
+ return avatar || false;
257
+ }
258
+ };
259
+ super({
260
+ networkControllerClient,
261
+ connectionControllerClient,
262
+ siweControllerClient: siweConfig,
263
+ defaultChain: getCaipDefaultChain(defaultChain),
264
+ tokens: HelpersUtil.getCaipTokens(tokens),
265
+ _sdkVersion: _sdkVersion ?? `react-native-wagmi-${ConstantsUtil.VERSION}`,
266
+ ...appKitOptions
267
+ });
268
+ this.options = options;
269
+ this.wagmiConfig = wagmiConfig;
270
+ this.syncRequestedNetworks([...wagmiConfig.chains]);
271
+ this.syncConnectors([...wagmiConfig.connectors]);
272
+ watchConnectors(wagmiConfig, {
273
+ onChange: connectors => this.syncConnectors([...connectors])
274
+ });
275
+ watchAccount(wagmiConfig, {
276
+ onChange: (accountData, prevAccountData) => {
277
+ this.syncAccount({
278
+ ...accountData
279
+ });
280
+ if (accountData.status === 'disconnected' && prevAccountData.status === 'connected') {
281
+ this.close();
282
+ }
283
+ }
284
+ });
285
+ }
286
+
287
+ // -- Public ------------------------------------------------------------------
288
+
289
+ // @ts-expect-error: Overriden state type is correct
290
+ getState() {
291
+ const state = super.getState();
292
+ return {
293
+ ...state,
294
+ selectedNetworkId: NetworkUtil.caipNetworkIdToNumber(state.selectedNetworkId)
295
+ };
296
+ }
297
+
298
+ // @ts-expect-error: Overriden state type is correct
299
+ subscribeState(callback) {
300
+ return super.subscribeState(state => callback({
301
+ ...state,
302
+ selectedNetworkId: NetworkUtil.caipNetworkIdToNumber(state.selectedNetworkId)
303
+ }));
304
+ }
305
+
306
+ // -- Private -----------------------------------------------------------------
307
+ syncRequestedNetworks(chains) {
308
+ const requestedCaipNetworks = chains?.map(chain => ({
309
+ id: `${ConstantsUtil.EIP155}:${chain.id}`,
310
+ name: chain.name,
311
+ imageId: PresetsUtil.EIP155NetworkImageIds[chain.id],
312
+ imageUrl: this.options?.chainImages?.[chain.id]
313
+ }));
314
+ this.setRequestedCaipNetworks(requestedCaipNetworks ?? []);
315
+ }
316
+ async syncAccount({
317
+ address,
318
+ isConnected,
319
+ chainId,
320
+ connector,
321
+ isConnecting,
322
+ isReconnecting
323
+ }) {
324
+ this.syncNetwork(address, chainId, isConnected);
325
+ this.setLoading(!!connector && (isConnecting || isReconnecting));
326
+ if (isConnected && address && chainId) {
327
+ const caipAddress = `${ConstantsUtil.EIP155}:${chainId}:${address}`;
328
+ this.setIsConnected(isConnected);
329
+ this.setCaipAddress(caipAddress);
330
+ await Promise.all([this.syncProfile(address, chainId), this.syncBalance(address, chainId), this.syncConnectedWalletInfo(connector), this.getApprovedCaipNetworksData()]);
331
+ this.hasSyncedConnectedAccount = true;
332
+ } else if (!isConnected && !isConnecting && !isReconnecting && this.hasSyncedConnectedAccount) {
333
+ this.resetAccount();
334
+ this.resetWcConnection();
335
+ this.resetNetwork();
336
+ }
337
+ }
338
+ async syncNetwork(address, chainId, isConnected) {
339
+ const chain = this.wagmiConfig.chains.find(c => c.id === chainId);
340
+ if (chain || chainId) {
341
+ const name = chain?.name ?? chainId?.toString();
342
+ const id = Number(chain?.id ?? chainId);
343
+ const caipChainId = `${ConstantsUtil.EIP155}:${id}`;
344
+ this.setCaipNetwork({
345
+ id: caipChainId,
346
+ name,
347
+ imageId: PresetsUtil.EIP155NetworkImageIds[id],
348
+ imageUrl: this.options?.chainImages?.[id]
349
+ });
350
+ if (isConnected && address && chainId) {
351
+ const caipAddress = `${ConstantsUtil.EIP155}:${id}:${address}`;
352
+ this.setCaipAddress(caipAddress);
353
+ if (chain?.blockExplorers?.default?.url) {
354
+ const url = `${chain.blockExplorers.default.url}/address/${address}`;
355
+ this.setAddressExplorerUrl(url);
356
+ } else {
357
+ this.setAddressExplorerUrl(undefined);
358
+ }
359
+ if (this.hasSyncedConnectedAccount) {
360
+ await this.syncProfile(address, chainId);
361
+ await this.syncBalance(address, chainId);
362
+ }
363
+ }
364
+ }
365
+ }
366
+ async syncProfile(address, chainId) {
367
+ try {
368
+ const response = await this.fetchIdentity({
369
+ address
370
+ });
371
+ if (!response) {
372
+ throw new Error('Couldnt fetch idendity');
373
+ }
374
+ this.setProfileName(response.name);
375
+ this.setProfileImage(response.avatar);
376
+ } catch {
377
+ if (chainId === mainnet.id) {
378
+ const profileName = await getEnsName(this.wagmiConfig, {
379
+ address,
380
+ chainId
381
+ });
382
+ if (profileName) {
383
+ this.setProfileName(profileName);
384
+ const profileImage = await wagmiGetEnsAvatar(this.wagmiConfig, {
385
+ name: profileName,
386
+ chainId
387
+ });
388
+ if (profileImage) {
389
+ this.setProfileImage(profileImage);
390
+ }
391
+ }
392
+ } else {
393
+ this.setProfileName(undefined);
394
+ this.setProfileImage(undefined);
395
+ }
396
+ }
397
+ }
398
+ async syncBalance(address, chainId) {
399
+ const chain = this.wagmiConfig.chains.find(c => c.id === chainId);
400
+ try {
401
+ if (chain) {
402
+ const balance = await getBalance(this.wagmiConfig, {
403
+ address,
404
+ chainId: chain.id,
405
+ token: this.options?.tokens?.[chainId]?.address
406
+ });
407
+ const formattedBalance = formatUnits(balance.value, balance.decimals);
408
+ this.setBalance(formattedBalance, balance.symbol);
409
+ return;
410
+ }
411
+ this.setBalance(undefined, undefined);
412
+ } catch {
413
+ this.setBalance(undefined, undefined);
414
+ }
415
+ }
416
+ async syncConnectedWalletInfo(connector) {
417
+ if (!connector) {
418
+ throw Error('syncConnectedWalletInfo - connector is undefined');
419
+ }
420
+ if (connector.id === ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID && connector.getProvider) {
421
+ const walletConnectProvider = await connector.getProvider();
422
+ if (walletConnectProvider.session) {
423
+ this.setConnectedWalletInfo({
424
+ ...walletConnectProvider.session.peer.metadata,
425
+ name: walletConnectProvider.session.peer.metadata.name,
426
+ icon: walletConnectProvider.session.peer.metadata.icons?.[0]
427
+ });
428
+ }
429
+ } else {
430
+ this.setConnectedWalletInfo({
431
+ id: connector.id,
432
+ name: connector.name,
433
+ icon: this.options?.connectorImages?.[connector.id] ?? connector.icon
434
+ });
435
+ }
436
+ }
437
+ syncConnectors(connectors) {
438
+ const uniqueIds = new Set();
439
+ const filteredConnectors = connectors.filter(item => !uniqueIds.has(item.id) && uniqueIds.add(item.id));
440
+ const excludedConnectors = [ConstantsUtil.AUTH_CONNECTOR_ID];
441
+ const _connectors = [];
442
+ filteredConnectors.forEach(({
443
+ id,
444
+ name,
445
+ icon
446
+ }) => {
447
+ if (!excludedConnectors.includes(id)) {
448
+ _connectors.push({
449
+ id,
450
+ explorerId: PresetsUtil.ConnectorExplorerIds[id],
451
+ imageId: PresetsUtil.ConnectorImageIds[id] ?? icon,
452
+ imageUrl: this.options?.connectorImages?.[id],
453
+ name: PresetsUtil.ConnectorNamesMap[id] ?? name,
454
+ type: PresetsUtil.ConnectorTypesMap[id] ?? 'EXTERNAL'
455
+ });
456
+ }
457
+ });
458
+ this.setConnectors(_connectors);
459
+ this.syncWalletConnectListeners(filteredConnectors);
460
+ this.syncAuthConnector(filteredConnectors);
461
+ }
462
+ async syncWalletConnectListeners(connectors) {
463
+ const connector = connectors.find(({
464
+ id
465
+ }) => id === ConstantsUtil.WALLET_CONNECT_CONNECTOR_ID);
466
+ if (connector) {
467
+ const provider = await connector.getProvider();
468
+ provider.signer.client.core.relayer.on('relayer_connect', () => {
469
+ provider.signer.client.core.relayer?.provider?.on('payload', payload => {
470
+ if (payload?.error) {
471
+ this.handleAlertError(payload?.error.message);
472
+ }
473
+ });
474
+ });
475
+ }
476
+ }
477
+ async syncAuthConnector(connectors) {
478
+ const authConnector = connectors.find(({
479
+ id
480
+ }) => id === ConstantsUtil.AUTH_CONNECTOR_ID);
481
+ if (authConnector) {
482
+ const provider = await authConnector.getProvider();
483
+ this.addConnector({
484
+ id: ConstantsUtil.AUTH_CONNECTOR_ID,
485
+ type: PresetsUtil.ConnectorTypesMap[ConstantsUtil.AUTH_CONNECTOR_ID],
486
+ name: PresetsUtil.ConnectorNamesMap[ConstantsUtil.AUTH_CONNECTOR_ID],
487
+ provider
488
+ });
489
+ this.addAuthListeners(authConnector);
490
+ }
491
+ }
492
+ async addAuthListeners(connector) {
493
+ const connectedConnector = await StorageUtil.getItem('@w3m/connected_connector');
494
+ if (connectedConnector === 'AUTH') {
495
+ // Set loader until it reconnects
496
+ super.setLoading(true);
497
+ }
498
+ const provider = await connector.getProvider();
499
+ provider.onSetPreferredAccount(async () => {
500
+ await reconnect(this.wagmiConfig, {
501
+ connectors: [connector]
502
+ });
503
+ });
504
+ provider.setOnTimeout(async () => {
505
+ this.handleAlertError(ErrorUtil.ALERT_ERRORS.SOCIALS_TIMEOUT);
506
+ this.setLoading(false);
507
+ });
508
+ }
509
+ }
510
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatUnits","parseUnits","connect","reconnect","disconnect","signMessage","getAccount","switchChain","watchAccount","watchConnectors","getEnsName","getEnsAvatar","wagmiGetEnsAvatar","getEnsAddress","wagmiGetEnsAddress","getBalance","prepareTransactionRequest","estimateGas","wagmiEstimateGas","sendTransaction","wagmiSendTransaction","waitForTransactionReceipt","writeContract","wagmiWriteContract","normalize","mainnet","OPTIONAL_METHODS","AppKitScaffold","HelpersUtil","StorageUtil","NetworkUtil","NamesUtil","ErrorUtil","ConstantsUtil","PresetsUtil","SIWEController","getDidChainId","getDidAddress","getCaipDefaultChain","getAuthCaipNetworks","getWalletConnectCaipNetworks","requireCaipAddress","AppKit","hasSyncedConnectedAccount","options","undefined","constructor","wagmiConfig","siweConfig","defaultChain","tokens","_sdkVersion","appKitOptions","Error","projectId","ALERT_ERRORS","PROJECT_ID_NOT_CONFIGURED","shortMessage","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","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","chainNamespace","Number","ensName","wcName","isReownName","resolveReownName","name","avatar","siweControllerClient","getCaipTokens","VERSION","syncRequestedNetworks","syncConnectors","onChange","accountData","prevAccountData","syncAccount","status","close","getState","selectedNetworkId","subscribeState","callback","requestedCaipNetworks","map","chain","EIP155","imageId","EIP155NetworkImageIds","imageUrl","chainImages","setRequestedCaipNetworks","isConnected","isConnecting","isReconnecting","syncNetwork","setLoading","setIsConnected","setCaipAddress","Promise","all","syncProfile","syncBalance","syncConnectedWalletInfo","resetAccount","resetWcConnection","resetNetwork","toString","caipChainId","setCaipNetwork","blockExplorers","default","url","setAddressExplorerUrl","response","fetchIdentity","setProfileName","setProfileImage","profileName","profileImage","balance","token","formattedBalance","decimals","setBalance","symbol","walletConnectProvider","setConnectedWalletInfo","peer","metadata","icon","icons","connectorImages","uniqueIds","Set","filteredConnectors","filter","item","has","add","excludedConnectors","_connectors","forEach","push","explorerId","ConnectorExplorerIds","ConnectorImageIds","ConnectorNamesMap","setConnectors","syncWalletConnectListeners","syncAuthConnector","relayer","payload","handleAlertError","authConnector","addConnector","addAuthListeners","connectedConnector","getItem","onSetPreferredAccount","setOnTimeout","SOCIALS_TIMEOUT"],"sourceRoot":"../../src","sources":["client.ts"],"mappings":"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"}