@reown/appkit-core-react-native 0.0.0-feat-multi-siwe-20250623183423 → 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 (147) hide show
  1. package/lib/commonjs/controllers/ApiController.js +11 -11
  2. package/lib/commonjs/controllers/ApiController.js.map +1 -1
  3. package/lib/commonjs/controllers/BlockchainApiController.js +24 -102
  4. package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
  5. package/lib/commonjs/controllers/ConnectionController.js +1 -7
  6. package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
  7. package/lib/commonjs/controllers/ConnectorController.js +0 -1
  8. package/lib/commonjs/controllers/ConnectorController.js.map +1 -1
  9. package/lib/commonjs/controllers/ModalController.js.map +1 -1
  10. package/lib/commonjs/controllers/OnRampController.js +41 -18
  11. package/lib/commonjs/controllers/OnRampController.js.map +1 -1
  12. package/lib/commonjs/controllers/OptionsController.js +3 -8
  13. package/lib/commonjs/controllers/OptionsController.js.map +1 -1
  14. package/lib/commonjs/controllers/RouterController.js.map +1 -1
  15. package/lib/commonjs/controllers/SendController.js +5 -5
  16. package/lib/commonjs/controllers/SendController.js.map +1 -1
  17. package/lib/commonjs/controllers/SwapController.js +40 -51
  18. package/lib/commonjs/controllers/SwapController.js.map +1 -1
  19. package/lib/commonjs/controllers/ThemeController.js +1 -9
  20. package/lib/commonjs/controllers/ThemeController.js.map +1 -1
  21. package/lib/commonjs/controllers/TransactionsController.js +2 -2
  22. package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
  23. package/lib/commonjs/index.js +3 -3
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/utils/AssetUtil.js +6 -5
  26. package/lib/commonjs/utils/AssetUtil.js.map +1 -1
  27. package/lib/commonjs/utils/ConnectionUtil.js +33 -0
  28. package/lib/commonjs/utils/ConnectionUtil.js.map +1 -0
  29. package/lib/commonjs/utils/ConstantsUtil.js +7 -537
  30. package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
  31. package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
  32. package/lib/commonjs/utils/StorageUtil.js +33 -67
  33. package/lib/commonjs/utils/StorageUtil.js.map +1 -1
  34. package/lib/commonjs/utils/SwapApiUtil.js +10 -19
  35. package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
  36. package/lib/module/controllers/ApiController.js +11 -11
  37. package/lib/module/controllers/ApiController.js.map +1 -1
  38. package/lib/module/controllers/BlockchainApiController.js +24 -102
  39. package/lib/module/controllers/BlockchainApiController.js.map +1 -1
  40. package/lib/module/controllers/ConnectionController.js +1 -7
  41. package/lib/module/controllers/ConnectionController.js.map +1 -1
  42. package/lib/module/controllers/ConnectorController.js +0 -1
  43. package/lib/module/controllers/ConnectorController.js.map +1 -1
  44. package/lib/module/controllers/ModalController.js.map +1 -1
  45. package/lib/module/controllers/OnRampController.js +41 -18
  46. package/lib/module/controllers/OnRampController.js.map +1 -1
  47. package/lib/module/controllers/OptionsController.js +3 -8
  48. package/lib/module/controllers/OptionsController.js.map +1 -1
  49. package/lib/module/controllers/RouterController.js.map +1 -1
  50. package/lib/module/controllers/SendController.js +5 -5
  51. package/lib/module/controllers/SendController.js.map +1 -1
  52. package/lib/module/controllers/SwapController.js +40 -51
  53. package/lib/module/controllers/SwapController.js.map +1 -1
  54. package/lib/module/controllers/ThemeController.js +1 -9
  55. package/lib/module/controllers/ThemeController.js.map +1 -1
  56. package/lib/module/controllers/TransactionsController.js +2 -2
  57. package/lib/module/controllers/TransactionsController.js.map +1 -1
  58. package/lib/module/index.js +1 -1
  59. package/lib/module/index.js.map +1 -1
  60. package/lib/module/utils/AssetUtil.js +6 -5
  61. package/lib/module/utils/AssetUtil.js.map +1 -1
  62. package/lib/module/utils/ConnectionUtil.js +27 -0
  63. package/lib/module/utils/ConnectionUtil.js.map +1 -0
  64. package/lib/module/utils/ConstantsUtil.js +7 -537
  65. package/lib/module/utils/ConstantsUtil.js.map +1 -1
  66. package/lib/module/utils/CoreHelperUtil.js.map +1 -1
  67. package/lib/module/utils/StorageUtil.js +33 -67
  68. package/lib/module/utils/StorageUtil.js.map +1 -1
  69. package/lib/module/utils/SwapApiUtil.js +10 -19
  70. package/lib/module/utils/SwapApiUtil.js.map +1 -1
  71. package/lib/typescript/controllers/AccountController.d.ts +2 -2
  72. package/lib/typescript/controllers/AccountController.d.ts.map +1 -1
  73. package/lib/typescript/controllers/ApiController.d.ts +1 -1
  74. package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
  75. package/lib/typescript/controllers/BlockchainApiController.d.ts +3 -15
  76. package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
  77. package/lib/typescript/controllers/ConnectionController.d.ts +0 -2
  78. package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
  79. package/lib/typescript/controllers/ConnectorController.d.ts.map +1 -1
  80. package/lib/typescript/controllers/ModalController.d.ts +1 -1
  81. package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
  82. package/lib/typescript/controllers/NetworkController.d.ts +1 -1
  83. package/lib/typescript/controllers/NetworkController.d.ts.map +1 -1
  84. package/lib/typescript/controllers/OnRampController.d.ts +3 -1
  85. package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
  86. package/lib/typescript/controllers/OptionsController.d.ts +2 -5
  87. package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
  88. package/lib/typescript/controllers/PublicStateController.d.ts +1 -1
  89. package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -1
  90. package/lib/typescript/controllers/RouterController.d.ts +1 -2
  91. package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
  92. package/lib/typescript/controllers/SwapController.d.ts +1 -1
  93. package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
  94. package/lib/typescript/controllers/ThemeController.d.ts +1 -1
  95. package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
  96. package/lib/typescript/index.d.ts +1 -1
  97. package/lib/typescript/index.d.ts.map +1 -1
  98. package/lib/typescript/utils/AssetUtil.d.ts +2 -2
  99. package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
  100. package/lib/typescript/utils/ConnectionUtil.d.ts +4 -0
  101. package/lib/typescript/utils/ConnectionUtil.d.ts.map +1 -0
  102. package/lib/typescript/utils/ConstantsUtil.d.ts +1 -421
  103. package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
  104. package/lib/typescript/utils/CoreHelperUtil.d.ts +2 -2
  105. package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
  106. package/lib/typescript/utils/FetchUtil.d.ts +1 -1
  107. package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
  108. package/lib/typescript/utils/NetworkUtil.d.ts +1 -1
  109. package/lib/typescript/utils/NetworkUtil.d.ts.map +1 -1
  110. package/lib/typescript/utils/StorageUtil.d.ts +4 -14
  111. package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
  112. package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
  113. package/lib/typescript/utils/TypeUtil.d.ts +32 -5
  114. package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
  115. package/package.json +2 -2
  116. package/src/controllers/AccountController.ts +2 -2
  117. package/src/controllers/ApiController.ts +7 -12
  118. package/src/controllers/BlockchainApiController.ts +27 -135
  119. package/src/controllers/ConnectionController.ts +2 -10
  120. package/src/controllers/ConnectorController.ts +0 -1
  121. package/src/controllers/ModalController.ts +1 -2
  122. package/src/controllers/NetworkController.ts +1 -1
  123. package/src/controllers/OnRampController.ts +63 -27
  124. package/src/controllers/OptionsController.ts +13 -14
  125. package/src/controllers/PublicStateController.ts +1 -1
  126. package/src/controllers/RouterController.ts +1 -2
  127. package/src/controllers/SendController.ts +5 -5
  128. package/src/controllers/SwapController.ts +48 -58
  129. package/src/controllers/ThemeController.ts +2 -11
  130. package/src/controllers/TransactionsController.ts +2 -2
  131. package/src/index.ts +1 -5
  132. package/src/utils/AssetUtil.ts +7 -5
  133. package/src/utils/ConnectionUtil.ts +27 -0
  134. package/src/utils/ConstantsUtil.ts +7 -542
  135. package/src/utils/CoreHelperUtil.ts +3 -8
  136. package/src/utils/FetchUtil.ts +1 -1
  137. package/src/utils/NetworkUtil.ts +1 -1
  138. package/src/utils/StorageUtil.ts +39 -82
  139. package/src/utils/SwapApiUtil.ts +10 -22
  140. package/src/utils/TypeUtil.ts +39 -8
  141. package/lib/commonjs/controllers/ConnectionsController.js +0 -215
  142. package/lib/commonjs/controllers/ConnectionsController.js.map +0 -1
  143. package/lib/module/controllers/ConnectionsController.js +0 -210
  144. package/lib/module/controllers/ConnectionsController.js.map +0 -1
  145. package/lib/typescript/controllers/ConnectionsController.d.ts +0 -44
  146. package/lib/typescript/controllers/ConnectionsController.d.ts.map +0 -1
  147. package/src/controllers/ConnectionsController.ts +0 -305
@@ -9,7 +9,8 @@ import type {
9
9
  OnRampCryptoCurrency,
10
10
  OnRampServiceProvider,
11
11
  OnRampError,
12
- OnRampErrorTypeValues
12
+ OnRampErrorTypeValues,
13
+ OnRampCountryDefaults
13
14
  } from '../utils/TypeUtil';
14
15
 
15
16
  import { CoreHelperUtil } from '../utils/CoreHelperUtil';
@@ -32,23 +33,23 @@ const mapErrorMessage = (errorCode: string): OnRampError => {
32
33
  const errorMap: Record<string, { type: OnRampErrorTypeValues; message: string }> = {
33
34
  [OnRampErrorType.AMOUNT_TOO_LOW]: {
34
35
  type: OnRampErrorType.AMOUNT_TOO_LOW,
35
- message: 'Amount is too low'
36
+ message: 'The amount is too low'
36
37
  },
37
38
  [OnRampErrorType.AMOUNT_TOO_HIGH]: {
38
39
  type: OnRampErrorType.AMOUNT_TOO_HIGH,
39
- message: 'Amount is too high'
40
+ message: 'The amount is too high'
40
41
  },
41
42
  [OnRampErrorType.INVALID_AMOUNT]: {
42
43
  type: OnRampErrorType.INVALID_AMOUNT,
43
- message: 'Please adjust amount'
44
+ message: 'Enter a valid amount'
44
45
  },
45
46
  [OnRampErrorType.INCOMPATIBLE_REQUEST]: {
46
47
  type: OnRampErrorType.INCOMPATIBLE_REQUEST,
47
- message: 'Try different amount or payment method'
48
+ message: 'Enter a valid amount'
48
49
  },
49
50
  [OnRampErrorType.BAD_REQUEST]: {
50
51
  type: OnRampErrorType.BAD_REQUEST,
51
- message: 'Try different amount or payment method'
52
+ message: 'Enter a valid amount'
52
53
  }
53
54
  };
54
55
 
@@ -63,6 +64,7 @@ const mapErrorMessage = (errorCode: string): OnRampError => {
63
64
  // -- Types --------------------------------------------- //
64
65
  export interface OnRampControllerState {
65
66
  countries: OnRampCountry[];
67
+ countriesDefaults?: OnRampCountryDefaults[];
66
68
  selectedCountry?: OnRampCountry;
67
69
  serviceProviders: OnRampServiceProvider[];
68
70
  selectedServiceProvider?: OnRampServiceProvider;
@@ -114,9 +116,8 @@ export const OnRampController = {
114
116
 
115
117
  if (updateCurrency) {
116
118
  const currencyCode =
117
- ConstantsUtil.COUNTRY_CURRENCIES[
118
- country.countryCode as keyof typeof ConstantsUtil.COUNTRY_CURRENCIES
119
- ] || 'USD';
119
+ state.countriesDefaults?.find(d => d.countryCode === country.countryCode)
120
+ ?.defaultCurrencyCode || 'USD';
120
121
 
121
122
  const currency = state.paymentCurrencies?.find(c => c.currencyCode === currencyCode);
122
123
 
@@ -126,6 +127,7 @@ export const OnRampController = {
126
127
  }
127
128
 
128
129
  await Promise.all([this.fetchPaymentMethods(), this.fetchCryptoCurrencies()]);
130
+ this.clearQuotes();
129
131
 
130
132
  state.loading = false;
131
133
 
@@ -134,8 +136,6 @@ export const OnRampController = {
134
136
 
135
137
  setSelectedPaymentMethod(paymentMethod: OnRampPaymentMethod) {
136
138
  state.selectedPaymentMethod = paymentMethod;
137
-
138
- this.clearQuotes();
139
139
  },
140
140
 
141
141
  setPurchaseCurrency(currency: OnRampCryptoCurrency) {
@@ -184,7 +184,7 @@ export const OnRampController = {
184
184
  selectedCurrency = state.purchaseCurrencies?.find(c => c.currencyCode === defaultCurrency);
185
185
  }
186
186
 
187
- state.purchaseCurrency = selectedCurrency || state.purchaseCurrencies?.[0] || undefined;
187
+ state.purchaseCurrency = selectedCurrency ?? state.purchaseCurrencies?.[0] ?? undefined;
188
188
  },
189
189
 
190
190
  getServiceProviderImage(serviceProviderName?: string) {
@@ -231,6 +231,27 @@ export const OnRampController = {
231
231
  }
232
232
  },
233
233
 
234
+ async fetchCountriesDefaults() {
235
+ try {
236
+ let countriesDefaults = await StorageUtil.getOnRampCountriesDefaults();
237
+
238
+ if (!countriesDefaults.length) {
239
+ countriesDefaults = (await BlockchainApiController.fetchOnRampCountriesDefaults()) ?? [];
240
+
241
+ if (countriesDefaults.length) {
242
+ StorageUtil.setOnRampCountriesDefaults(countriesDefaults);
243
+ }
244
+ }
245
+
246
+ state.countriesDefaults = countriesDefaults;
247
+ } catch (error) {
248
+ state.error = {
249
+ type: OnRampErrorType.FAILED_TO_LOAD_COUNTRIES,
250
+ message: 'Failed to load countries defaults'
251
+ };
252
+ }
253
+ },
254
+
234
255
  async fetchServiceProviders() {
235
256
  try {
236
257
  let serviceProviders = await StorageUtil.getOnRampServiceProviders();
@@ -259,10 +280,8 @@ export const OnRampController = {
259
280
  });
260
281
 
261
282
  const defaultCountryPaymentMethods =
262
- ConstantsUtil.COUNTRY_DEFAULT_PAYMENT_METHOD[
263
- state.selectedCountry
264
- ?.countryCode as keyof typeof ConstantsUtil.COUNTRY_DEFAULT_PAYMENT_METHOD
265
- ];
283
+ state.countriesDefaults?.find(d => d.countryCode === state.selectedCountry?.countryCode)
284
+ ?.defaultPaymentMethods || [];
266
285
 
267
286
  state.paymentMethods =
268
287
  paymentMethods?.sort((a, b) => {
@@ -276,9 +295,7 @@ export const OnRampController = {
276
295
  return aIndex - bIndex;
277
296
  }) || [];
278
297
 
279
- state.selectedPaymentMethod = paymentMethods?.[0] || undefined;
280
-
281
- this.clearQuotes();
298
+ state.selectedPaymentMethod = state.paymentMethods[0];
282
299
  } catch (error) {
283
300
  state.error = {
284
301
  type: OnRampErrorType.FAILED_TO_LOAD_METHODS,
@@ -336,9 +353,8 @@ export const OnRampController = {
336
353
 
337
354
  if (countryCode) {
338
355
  currencyCode =
339
- ConstantsUtil.COUNTRY_CURRENCIES[
340
- countryCode as keyof typeof ConstantsUtil.COUNTRY_CURRENCIES
341
- ];
356
+ state.countriesDefaults?.find(d => d.countryCode === countryCode)?.defaultCurrencyCode ||
357
+ 'USD';
342
358
  }
343
359
 
344
360
  const preferredCurrency = await StorageUtil.getOnRampPreferredFiatCurrency();
@@ -387,6 +403,8 @@ export const OnRampController = {
387
403
  }
388
404
 
389
405
  state.quotesLoading = true;
406
+ state.selectedQuote = undefined;
407
+ state.selectedServiceProvider = undefined;
390
408
  state.error = undefined;
391
409
 
392
410
  this.abortGetQuotes(false);
@@ -395,7 +413,6 @@ export const OnRampController = {
395
413
  try {
396
414
  const body = {
397
415
  countryCode: state.selectedCountry?.countryCode!,
398
- paymentMethodType: state.selectedPaymentMethod?.paymentMethod!,
399
416
  destinationCurrencyCode: state.purchaseCurrency?.currencyCode!,
400
417
  sourceAmount: state.paymentAmount,
401
418
  sourceCurrencyCode: state.paymentCurrency?.currencyCode!,
@@ -414,9 +431,25 @@ export const OnRampController = {
414
431
  const quotes = response.sort((a, b) => b.customerScore - a.customerScore);
415
432
 
416
433
  state.quotes = quotes;
417
- state.selectedQuote = quotes[0];
434
+
435
+ //Replace payment method if it's not in the quotes
436
+ if (
437
+ !state.selectedPaymentMethod ||
438
+ !quotes.some(
439
+ quote => quote.paymentMethodType === state.selectedPaymentMethod?.paymentMethod
440
+ )
441
+ ) {
442
+ state.selectedPaymentMethod = state.paymentMethods.find(
443
+ method => method.paymentMethod === quotes[0]?.paymentMethodType
444
+ );
445
+ }
446
+
447
+ state.selectedQuote = quotes.find(
448
+ quote => quote.paymentMethodType === state.selectedPaymentMethod?.paymentMethod
449
+ );
450
+
418
451
  state.selectedServiceProvider = state.serviceProviders.find(
419
- sp => sp.serviceProvider === quotes[0]?.serviceProvider
452
+ sp => sp.serviceProvider === state.selectedQuote?.serviceProvider
420
453
  );
421
454
  } catch (error: any) {
422
455
  if (error.name === 'AbortError') {
@@ -492,7 +525,7 @@ export const OnRampController = {
492
525
  throw new Error('Invalid quote');
493
526
  }
494
527
 
495
- const widget = await BlockchainApiController.getOnRampWidget({
528
+ const body = {
496
529
  countryCode: quote.countryCode,
497
530
  destinationCurrencyCode: quote.destinationCurrencyCode,
498
531
  paymentMethodType: quote.paymentMethodType,
@@ -501,7 +534,9 @@ export const OnRampController = {
501
534
  sourceCurrencyCode: quote.sourceCurrencyCode,
502
535
  walletAddress: AccountController.state.address!,
503
536
  redirectUrl: metadata?.redirect?.universal ?? metadata?.redirect?.native
504
- });
537
+ };
538
+
539
+ const widget = await BlockchainApiController.getOnRampWidget(body);
505
540
 
506
541
  if (!widget || !widget.widgetUrl) {
507
542
  throw new Error('Invalid widget response');
@@ -555,6 +590,7 @@ export const OnRampController = {
555
590
  await this.fetchServiceProviders();
556
591
 
557
592
  await Promise.all([
593
+ this.fetchCountriesDefaults(),
558
594
  this.fetchPaymentMethods(),
559
595
  this.fetchFiatLimits(),
560
596
  this.fetchCryptoCurrencies(),
@@ -1,7 +1,13 @@
1
1
  import { proxy, ref } from 'valtio';
2
- import type { Tokens, Storage, Metadata } from '@reown/appkit-common-react-native';
3
- import type { CustomWallet, Features, ProjectId, SdkType, SdkVersion } from '../utils/TypeUtil';
4
-
2
+ import type {
3
+ CustomWallet,
4
+ Features,
5
+ Metadata,
6
+ ProjectId,
7
+ SdkType,
8
+ SdkVersion,
9
+ Tokens
10
+ } from '../utils/TypeUtil';
5
11
  import { ConstantsUtil } from '../utils/ConstantsUtil';
6
12
 
7
13
  // -- Types --------------------------------------------- //
@@ -11,8 +17,7 @@ export interface ClipboardClient {
11
17
 
12
18
  export interface OptionsControllerState {
13
19
  projectId: ProjectId;
14
- clipboardClient?: ClipboardClient;
15
- storage?: Storage;
20
+ _clipboardClient?: ClipboardClient;
16
21
  includeWalletIds?: string[];
17
22
  excludeWalletIds?: string[];
18
23
  featuredWalletIds?: string[];
@@ -42,7 +47,7 @@ export const OptionsController = {
42
47
  state,
43
48
 
44
49
  setClipboardClient(client: ClipboardClient) {
45
- state.clipboardClient = ref(client);
50
+ state._clipboardClient = ref(client);
46
51
  },
47
52
 
48
53
  setProjectId(projectId: OptionsControllerState['projectId']) {
@@ -97,18 +102,12 @@ export const OptionsController = {
97
102
  state.isOnRampEnabled = isOnRampEnabled;
98
103
  },
99
104
 
100
- setStorage(storage?: OptionsControllerState['storage']) {
101
- if (storage) {
102
- state.storage = ref(storage);
103
- }
104
- },
105
-
106
105
  isClipboardAvailable() {
107
- return !!state.clipboardClient;
106
+ return !!state._clipboardClient;
108
107
  },
109
108
 
110
109
  copyToClipboard(value: string) {
111
- const client = state.clipboardClient;
110
+ const client = state._clipboardClient;
112
111
  if (client) {
113
112
  client?.setString(value);
114
113
  }
@@ -1,6 +1,6 @@
1
1
  import { proxy, subscribe as sub } from 'valtio';
2
2
  import { subscribeKey as subKey } from 'valtio/utils';
3
- import type { CaipNetworkId } from '@reown/appkit-common-react-native';
3
+ import type { CaipNetworkId } from '../utils/TypeUtil.js';
4
4
 
5
5
  // -- Types --------------------------------------------- //
6
6
  export interface PublicStateControllerState {
@@ -1,8 +1,7 @@
1
1
  import { proxy } from 'valtio';
2
- import type { CaipNetwork } from '@reown/appkit-common-react-native';
3
-
4
2
  import type {
5
3
  WcWallet,
4
+ CaipNetwork,
6
5
  Connector,
7
6
  SwapInputTarget,
8
7
  OnRampTransactionResult
@@ -6,8 +6,8 @@ import { ConnectionController } from './ConnectionController';
6
6
  import { SnackController } from './SnackController';
7
7
  import { CoreHelperUtil } from '../utils/CoreHelperUtil';
8
8
  import { EventsController } from './EventsController';
9
+ import { NetworkController } from './NetworkController';
9
10
  import { RouterController } from './RouterController';
10
- import { ConnectionsController } from './ConnectionsController';
11
11
 
12
12
  // -- Types --------------------------------------------- //
13
13
  export interface TxParams {
@@ -100,7 +100,7 @@ export const SendController = {
100
100
  isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount',
101
101
  token: this.state.token.address,
102
102
  amount: this.state.sendTokenAmount,
103
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || ''
103
+ network: NetworkController.state.caipNetwork?.id || ''
104
104
  }
105
105
  });
106
106
  this.sendERC20Token({
@@ -123,7 +123,7 @@ export const SendController = {
123
123
  isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount',
124
124
  token: this.state.token?.symbol,
125
125
  amount: this.state.sendTokenAmount,
126
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || ''
126
+ network: NetworkController.state.caipNetwork?.id || ''
127
127
  }
128
128
  });
129
129
  this.sendNativeToken({
@@ -165,7 +165,7 @@ export const SendController = {
165
165
  isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount',
166
166
  token: this.state.token?.symbol || '',
167
167
  amount: params.sendTokenAmount,
168
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || ''
168
+ network: NetworkController.state.caipNetwork?.id || ''
169
169
  }
170
170
  });
171
171
  this.resetSend();
@@ -178,7 +178,7 @@ export const SendController = {
178
178
  isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount',
179
179
  token: this.state.token?.symbol || '',
180
180
  amount: params.sendTokenAmount,
181
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || ''
181
+ network: NetworkController.state.caipNetwork?.id || ''
182
182
  }
183
183
  });
184
184
  SnackController.showError('Something went wrong');
@@ -1,9 +1,10 @@
1
1
  import { subscribeKey as subKey } from 'valtio/utils';
2
2
  import { proxy, subscribe as sub } from 'valtio';
3
- import { NumberUtil, type CaipAddress } from '@reown/appkit-common-react-native';
3
+ import { NumberUtil } from '@reown/appkit-common-react-native';
4
4
 
5
5
  import { ConstantsUtil } from '../utils/ConstantsUtil';
6
6
  import { SwapApiUtil } from '../utils/SwapApiUtil';
7
+ import { NetworkController } from './NetworkController';
7
8
  import { BlockchainApiController } from './BlockchainApiController';
8
9
  import { OptionsController } from './OptionsController';
9
10
  import { SwapCalculationUtil } from '../utils/SwapCalculationUtil';
@@ -13,9 +14,9 @@ import type { SwapInputTarget, SwapTokenWithBalance } from '../utils/TypeUtil';
13
14
  import { ConnectorController } from './ConnectorController';
14
15
  import { AccountController } from './AccountController';
15
16
  import { CoreHelperUtil } from '../utils/CoreHelperUtil';
17
+ import { ConnectionController } from './ConnectionController';
16
18
  import { TransactionsController } from './TransactionsController';
17
19
  import { EventsController } from './EventsController';
18
- import { ConnectionsController } from './ConnectionsController';
19
20
 
20
21
  // -- Constants ---------------------------------------- //
21
22
  export const INITIAL_GAS_LIMIT = 150000;
@@ -157,15 +158,9 @@ export const SwapController = {
157
158
  },
158
159
 
159
160
  getParams() {
160
- const { activeAddress, activeNamespace, activeNetwork } = ConnectionsController.state;
161
- const address = CoreHelperUtil.getPlainAddress(activeAddress);
162
-
163
- if (!activeNamespace || !activeNetwork) {
164
- throw new Error('No active namespace or network found to swap the tokens from.');
165
- }
166
-
167
- const networkAddress: CaipAddress = `${activeNetwork.caipNetworkId}:${ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]}`;
168
-
161
+ const caipAddress = AccountController.state.caipAddress;
162
+ const address = CoreHelperUtil.getPlainAddress(caipAddress);
163
+ const networkAddress = NetworkController.getActiveNetworkTokenAddress();
169
164
  const type = ConnectorController.state.connectedConnector;
170
165
 
171
166
  if (!address) {
@@ -183,7 +178,7 @@ export const SwapController = {
183
178
  return {
184
179
  networkAddress,
185
180
  fromAddress: address,
186
- fromCaipAddress: activeAddress,
181
+ fromCaipAddress: caipAddress,
187
182
  sourceTokenAddress: state.sourceToken?.address,
188
183
  toTokenAddress: state.toToken?.address,
189
184
  toTokenAmount: state.toTokenAmount,
@@ -194,7 +189,7 @@ export const SwapController = {
194
189
  invalidSourceToken,
195
190
  invalidSourceTokenAmount,
196
191
  availableToSwap:
197
- activeAddress && !invalidToToken && !invalidSourceToken && !invalidSourceTokenAmount,
192
+ caipAddress && !invalidToToken && !invalidSourceToken && !invalidSourceTokenAmount,
198
193
  isAuthConnector: type === 'AUTH'
199
194
  };
200
195
  },
@@ -287,6 +282,7 @@ export const SwapController = {
287
282
 
288
283
  async getMyTokensWithBalance(forceUpdate?: string) {
289
284
  const balances = await SwapApiUtil.getMyTokensWithBalance(forceUpdate);
285
+
290
286
  if (!balances) {
291
287
  return;
292
288
  }
@@ -405,7 +401,7 @@ export const SwapController = {
405
401
 
406
402
  setBalances(balances: SwapTokenWithBalance[]) {
407
403
  const { networkAddress } = this.getParams();
408
- const caipNetwork = ConnectionsController.state.activeNetwork;
404
+ const caipNetwork = NetworkController.state.caipNetwork;
409
405
 
410
406
  if (!caipNetwork) {
411
407
  return;
@@ -417,9 +413,7 @@ export const SwapController = {
417
413
  state.tokensPriceMap[token.address] = token.price || 0;
418
414
  });
419
415
 
420
- state.myTokensWithBalance = balances.filter(
421
- token => token.address?.startsWith(caipNetwork.caipNetworkId)
422
- );
416
+ state.myTokensWithBalance = balances.filter(token => token.address?.startsWith(caipNetwork.id));
423
417
 
424
418
  state.networkBalanceInUSD = networkToken
425
419
  ? NumberUtil.multiply(networkToken.quantity.numeric, networkToken.price).toString()
@@ -470,12 +464,12 @@ export const SwapController = {
470
464
 
471
465
  // -- Swap ---------------------------------------------- //
472
466
  async swapTokens() {
473
- const address = ConnectionsController.state.activeAddress;
467
+ const address = AccountController.state.address as `${string}:${string}:${string}`;
474
468
  const sourceToken = state.sourceToken;
475
469
  const toToken = state.toToken;
476
470
  const haveSourceTokenAmount = NumberUtil.bigNumber(state.sourceTokenAmount).isGreaterThan(0);
477
471
 
478
- if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount || !address) {
472
+ if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount) {
479
473
  return;
480
474
  }
481
475
 
@@ -485,44 +479,39 @@ export const SwapController = {
485
479
  .multipliedBy(10 ** sourceToken.decimals)
486
480
  .integerValue();
487
481
 
488
- try {
489
- const quoteResponse = await BlockchainApiController.fetchSwapQuote({
490
- userAddress: address,
491
- projectId: OptionsController.state.projectId,
492
- from: sourceToken.address,
493
- to: toToken.address,
494
- gasPrice: state.gasFee,
495
- amount: amountDecimal.toString()
496
- });
482
+ const quoteResponse = await BlockchainApiController.fetchSwapQuote({
483
+ userAddress: address,
484
+ projectId: OptionsController.state.projectId,
485
+ from: sourceToken.address,
486
+ to: toToken.address,
487
+ gasPrice: state.gasFee,
488
+ amount: amountDecimal.toString()
489
+ });
497
490
 
498
- state.loadingQuote = false;
491
+ state.loadingQuote = false;
499
492
 
500
- const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
493
+ const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
501
494
 
502
- if (!quoteToAmount) {
503
- return;
504
- }
495
+ if (!quoteToAmount) {
496
+ return;
497
+ }
505
498
 
506
- const toTokenAmount = NumberUtil.bigNumber(quoteToAmount)
507
- .dividedBy(10 ** toToken.decimals)
508
- .toString();
499
+ const toTokenAmount = NumberUtil.bigNumber(quoteToAmount)
500
+ .dividedBy(10 ** toToken.decimals)
501
+ .toString();
509
502
 
510
- this.setToTokenAmount(toTokenAmount);
503
+ this.setToTokenAmount(toTokenAmount);
511
504
 
512
- const isInsufficientToken = this.hasInsufficientToken(
513
- state.sourceTokenAmount,
514
- sourceToken.address
515
- );
505
+ const isInsufficientToken = this.hasInsufficientToken(
506
+ state.sourceTokenAmount,
507
+ sourceToken.address
508
+ );
516
509
 
517
- if (isInsufficientToken) {
518
- state.inputError = 'Insufficient balance';
519
- } else {
520
- state.inputError = undefined;
521
- this.setTransactionDetails();
522
- }
523
- } catch (error) {
524
- SnackController.showError('Failed to get swap quote');
525
- state.loadingQuote = false;
510
+ if (isInsufficientToken) {
511
+ state.inputError = 'Insufficient balance';
512
+ } else {
513
+ state.inputError = undefined;
514
+ this.setTransactionDetails();
526
515
  }
527
516
  },
528
517
 
@@ -591,7 +580,7 @@ export const SwapController = {
591
580
  if (!response) {
592
581
  throw new Error('createAllowanceTransaction - No response from generateApproveCalldata');
593
582
  }
594
- const gasLimit = await ConnectionsController.estimateGas({
583
+ const gasLimit = await ConnectionController.estimateGas({
595
584
  address: fromAddress as `0x${string}`,
596
585
  to: CoreHelperUtil.getPlainAddress(response.tx.to) as `0x${string}`,
597
586
  data: response.tx.data
@@ -644,7 +633,7 @@ export const SwapController = {
644
633
  return undefined;
645
634
  }
646
635
 
647
- const amount = ConnectionsController.parseUnits(
636
+ const amount = ConnectionController.parseUnits(
648
637
  sourceTokenAmount,
649
638
  sourceToken.decimals
650
639
  )?.toString();
@@ -712,13 +701,13 @@ export const SwapController = {
712
701
  }
713
702
 
714
703
  try {
715
- await ConnectionsController.sendTransaction({
704
+ await ConnectionController.sendTransaction({
716
705
  address: fromAddress as `0x${string}`,
717
706
  to: data.to as `0x${string}`,
718
707
  data: data.data as `0x${string}`,
719
708
  value: BigInt(data.value),
720
709
  gasPrice: BigInt(data.gasPrice),
721
- chainNamespace: ConnectionsController.state.activeNamespace
710
+ chainNamespace: 'eip155'
722
711
  });
723
712
 
724
713
  await this.swapTokens();
@@ -737,6 +726,7 @@ export const SwapController = {
737
726
  if (!data) {
738
727
  return undefined;
739
728
  }
729
+
740
730
  const { fromAddress, toTokenAmount, isAuthConnector } = this.getParams();
741
731
 
742
732
  state.loadingTransaction = true;
@@ -763,14 +753,14 @@ export const SwapController = {
763
753
 
764
754
  try {
765
755
  const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].join(',');
766
- const transactionHash = await ConnectionsController.sendTransaction({
756
+ const transactionHash = await ConnectionController.sendTransaction({
767
757
  address: fromAddress as `0x${string}`,
768
758
  to: data.to as `0x${string}`,
769
759
  data: data.data as `0x${string}`,
770
760
  gas: data.gas,
771
761
  gasPrice: BigInt(data.gasPrice),
772
762
  value: data.value,
773
- chainNamespace: ConnectionsController.state.activeNamespace
763
+ chainNamespace: 'eip155'
774
764
  });
775
765
 
776
766
  state.loadingTransaction = false;
@@ -779,7 +769,7 @@ export const SwapController = {
779
769
  type: 'track',
780
770
  event: 'SWAP_SUCCESS',
781
771
  properties: {
782
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
772
+ network: NetworkController.state.caipNetwork?.id || '',
783
773
  swapFromToken: this.state.sourceToken?.symbol || '',
784
774
  swapToToken: this.state.toToken?.symbol || '',
785
775
  swapFromAmount: this.state.sourceTokenAmount || '',
@@ -811,7 +801,7 @@ export const SwapController = {
811
801
  event: 'SWAP_ERROR',
812
802
  properties: {
813
803
  message: error?.shortMessage ?? error?.message ?? 'Unknown',
814
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
804
+ network: NetworkController.state.caipNetwork?.id || '',
815
805
  swapFromToken: this.state.sourceToken?.symbol || '',
816
806
  swapToToken: this.state.toToken?.symbol || '',
817
807
  swapFromAmount: this.state.sourceTokenAmount || '',
@@ -1,11 +1,10 @@
1
- import { Appearance } from 'react-native';
2
1
  import { proxy, subscribe as sub } from 'valtio';
3
2
  import type { ThemeMode, ThemeVariables } from '@reown/appkit-common-react-native';
4
3
 
5
4
  // -- Types --------------------------------------------- //
6
5
  export interface ThemeControllerState {
7
6
  themeMode?: ThemeMode;
8
- themeVariables?: ThemeVariables;
7
+ themeVariables: ThemeVariables;
9
8
  }
10
9
 
11
10
  // -- State --------------------------------------------- //
@@ -23,18 +22,10 @@ export const ThemeController = {
23
22
  },
24
23
 
25
24
  setThemeMode(themeMode: ThemeControllerState['themeMode']) {
26
- if (!themeMode) {
27
- state.themeMode = Appearance.getColorScheme() as ThemeMode;
28
- } else {
29
- state.themeMode = themeMode;
30
- }
25
+ state.themeMode = themeMode;
31
26
  },
32
27
 
33
28
  setThemeVariables(themeVariables: ThemeControllerState['themeVariables']) {
34
- if (!themeVariables) {
35
- state.themeVariables = {};
36
- }
37
-
38
29
  state.themeVariables = { ...state.themeVariables, ...themeVariables };
39
30
  }
40
31
  };
@@ -3,9 +3,9 @@ import { proxy, subscribe as sub } from 'valtio/vanilla';
3
3
  import { OptionsController } from './OptionsController';
4
4
  import { EventsController } from './EventsController';
5
5
  import { SnackController } from './SnackController';
6
+ import { NetworkController } from './NetworkController';
6
7
  import { BlockchainApiController } from './BlockchainApiController';
7
8
  import { AccountController } from './AccountController';
8
- import { ConnectionsController } from './ConnectionsController';
9
9
 
10
10
  // -- Types --------------------------------------------- //
11
11
  type TransactionByMonthMap = Record<string, Transaction[]>;
@@ -121,7 +121,7 @@ export const TransactionsController = {
121
121
  },
122
122
 
123
123
  filterByConnectedChain(transactions: Transaction[]) {
124
- const chainId = ConnectionsController.state.activeCaipNetworkId;
124
+ const chainId = NetworkController.state.caipNetwork?.id;
125
125
  const filteredTransactions = transactions.filter(
126
126
  transaction => transaction.metadata.chain === chainId
127
127
  );
package/src/index.ts CHANGED
@@ -21,11 +21,6 @@ export {
21
21
  type ConnectionControllerState
22
22
  } from './controllers/ConnectionController';
23
23
 
24
- export {
25
- ConnectionsController,
26
- type ConnectionsControllerState
27
- } from './controllers/ConnectionsController';
28
-
29
24
  export {
30
25
  ConnectorController,
31
26
  type ConnectorControllerState
@@ -67,6 +62,7 @@ export { WebviewController, type WebviewControllerState } from './controllers/We
67
62
  // -- Utils -------------------------------------------------------------------
68
63
  export { ApiUtil } from './utils/ApiUtil';
69
64
  export { AssetUtil } from './utils/AssetUtil';
65
+ export { ConnectionUtil } from './utils/ConnectionUtil';
70
66
  export { ConstantsUtil } from './utils/ConstantsUtil';
71
67
  export { CoreHelperUtil } from './utils/CoreHelperUtil';
72
68
  export { StorageUtil } from './utils/StorageUtil';