@reown/appkit-core-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.
- package/lib/commonjs/controllers/ApiController.js +11 -11
- package/lib/commonjs/controllers/ApiController.js.map +1 -1
- package/lib/commonjs/controllers/BlockchainApiController.js +24 -102
- package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectionController.js +1 -7
- package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectorController.js +0 -1
- package/lib/commonjs/controllers/ConnectorController.js.map +1 -1
- package/lib/commonjs/controllers/ModalController.js.map +1 -1
- package/lib/commonjs/controllers/OnRampController.js +41 -18
- package/lib/commonjs/controllers/OnRampController.js.map +1 -1
- package/lib/commonjs/controllers/OptionsController.js +3 -8
- package/lib/commonjs/controllers/OptionsController.js.map +1 -1
- package/lib/commonjs/controllers/RouterController.js.map +1 -1
- package/lib/commonjs/controllers/SendController.js +5 -5
- package/lib/commonjs/controllers/SendController.js.map +1 -1
- package/lib/commonjs/controllers/SwapController.js +40 -51
- package/lib/commonjs/controllers/SwapController.js.map +1 -1
- package/lib/commonjs/controllers/ThemeController.js +1 -9
- package/lib/commonjs/controllers/ThemeController.js.map +1 -1
- package/lib/commonjs/controllers/TransactionsController.js +2 -2
- package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
- package/lib/commonjs/index.js +3 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/AssetUtil.js +6 -5
- package/lib/commonjs/utils/AssetUtil.js.map +1 -1
- package/lib/commonjs/utils/ConnectionUtil.js +33 -0
- package/lib/commonjs/utils/ConnectionUtil.js.map +1 -0
- package/lib/commonjs/utils/ConstantsUtil.js +7 -537
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
- package/lib/commonjs/utils/StorageUtil.js +33 -67
- package/lib/commonjs/utils/StorageUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapApiUtil.js +10 -19
- package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
- package/lib/module/controllers/ApiController.js +11 -11
- package/lib/module/controllers/ApiController.js.map +1 -1
- package/lib/module/controllers/BlockchainApiController.js +24 -102
- package/lib/module/controllers/BlockchainApiController.js.map +1 -1
- package/lib/module/controllers/ConnectionController.js +1 -7
- package/lib/module/controllers/ConnectionController.js.map +1 -1
- package/lib/module/controllers/ConnectorController.js +0 -1
- package/lib/module/controllers/ConnectorController.js.map +1 -1
- package/lib/module/controllers/ModalController.js.map +1 -1
- package/lib/module/controllers/OnRampController.js +41 -18
- package/lib/module/controllers/OnRampController.js.map +1 -1
- package/lib/module/controllers/OptionsController.js +3 -8
- package/lib/module/controllers/OptionsController.js.map +1 -1
- package/lib/module/controllers/RouterController.js.map +1 -1
- package/lib/module/controllers/SendController.js +5 -5
- package/lib/module/controllers/SendController.js.map +1 -1
- package/lib/module/controllers/SwapController.js +40 -51
- package/lib/module/controllers/SwapController.js.map +1 -1
- package/lib/module/controllers/ThemeController.js +1 -9
- package/lib/module/controllers/ThemeController.js.map +1 -1
- package/lib/module/controllers/TransactionsController.js +2 -2
- package/lib/module/controllers/TransactionsController.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/AssetUtil.js +6 -5
- package/lib/module/utils/AssetUtil.js.map +1 -1
- package/lib/module/utils/ConnectionUtil.js +27 -0
- package/lib/module/utils/ConnectionUtil.js.map +1 -0
- package/lib/module/utils/ConstantsUtil.js +7 -537
- package/lib/module/utils/ConstantsUtil.js.map +1 -1
- package/lib/module/utils/CoreHelperUtil.js.map +1 -1
- package/lib/module/utils/StorageUtil.js +33 -67
- package/lib/module/utils/StorageUtil.js.map +1 -1
- package/lib/module/utils/SwapApiUtil.js +10 -19
- package/lib/module/utils/SwapApiUtil.js.map +1 -1
- package/lib/typescript/controllers/AccountController.d.ts +2 -2
- package/lib/typescript/controllers/AccountController.d.ts.map +1 -1
- package/lib/typescript/controllers/ApiController.d.ts +1 -1
- package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/BlockchainApiController.d.ts +3 -15
- package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectionController.d.ts +0 -2
- package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectorController.d.ts.map +1 -1
- package/lib/typescript/controllers/ModalController.d.ts +1 -1
- package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
- package/lib/typescript/controllers/NetworkController.d.ts +1 -1
- package/lib/typescript/controllers/NetworkController.d.ts.map +1 -1
- package/lib/typescript/controllers/OnRampController.d.ts +3 -1
- package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
- package/lib/typescript/controllers/OptionsController.d.ts +2 -5
- package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
- package/lib/typescript/controllers/PublicStateController.d.ts +1 -1
- package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -1
- package/lib/typescript/controllers/RouterController.d.ts +1 -2
- package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
- package/lib/typescript/controllers/SwapController.d.ts +1 -1
- package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
- package/lib/typescript/controllers/ThemeController.d.ts +1 -1
- package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/AssetUtil.d.ts +2 -2
- package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
- package/lib/typescript/utils/ConnectionUtil.d.ts +4 -0
- package/lib/typescript/utils/ConnectionUtil.d.ts.map +1 -0
- package/lib/typescript/utils/ConstantsUtil.d.ts +1 -421
- package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
- package/lib/typescript/utils/CoreHelperUtil.d.ts +2 -2
- package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
- package/lib/typescript/utils/NetworkUtil.d.ts +1 -1
- package/lib/typescript/utils/NetworkUtil.d.ts.map +1 -1
- package/lib/typescript/utils/StorageUtil.d.ts +4 -14
- package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
- package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
- package/lib/typescript/utils/TypeUtil.d.ts +32 -5
- package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/controllers/AccountController.ts +2 -2
- package/src/controllers/ApiController.ts +7 -12
- package/src/controllers/BlockchainApiController.ts +27 -135
- package/src/controllers/ConnectionController.ts +2 -10
- package/src/controllers/ConnectorController.ts +0 -1
- package/src/controllers/ModalController.ts +1 -2
- package/src/controllers/NetworkController.ts +1 -1
- package/src/controllers/OnRampController.ts +63 -27
- package/src/controllers/OptionsController.ts +13 -14
- package/src/controllers/PublicStateController.ts +1 -1
- package/src/controllers/RouterController.ts +1 -2
- package/src/controllers/SendController.ts +5 -5
- package/src/controllers/SwapController.ts +48 -58
- package/src/controllers/ThemeController.ts +2 -11
- package/src/controllers/TransactionsController.ts +2 -2
- package/src/index.ts +1 -5
- package/src/utils/AssetUtil.ts +7 -5
- package/src/utils/ConnectionUtil.ts +27 -0
- package/src/utils/ConstantsUtil.ts +7 -542
- package/src/utils/CoreHelperUtil.ts +3 -8
- package/src/utils/FetchUtil.ts +1 -1
- package/src/utils/NetworkUtil.ts +1 -1
- package/src/utils/StorageUtil.ts +39 -82
- package/src/utils/SwapApiUtil.ts +10 -22
- package/src/utils/TypeUtil.ts +39 -8
- package/lib/commonjs/controllers/ConnectionsController.js +0 -215
- package/lib/commonjs/controllers/ConnectionsController.js.map +0 -1
- package/lib/module/controllers/ConnectionsController.js +0 -210
- package/lib/module/controllers/ConnectionsController.js.map +0 -1
- package/lib/typescript/controllers/ConnectionsController.d.ts +0 -44
- package/lib/typescript/controllers/ConnectionsController.d.ts.map +0 -1
- 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: '
|
|
36
|
+
message: 'The amount is too low'
|
|
36
37
|
},
|
|
37
38
|
[OnRampErrorType.AMOUNT_TOO_HIGH]: {
|
|
38
39
|
type: OnRampErrorType.AMOUNT_TOO_HIGH,
|
|
39
|
-
message: '
|
|
40
|
+
message: 'The amount is too high'
|
|
40
41
|
},
|
|
41
42
|
[OnRampErrorType.INVALID_AMOUNT]: {
|
|
42
43
|
type: OnRampErrorType.INVALID_AMOUNT,
|
|
43
|
-
message: '
|
|
44
|
+
message: 'Enter a valid amount'
|
|
44
45
|
},
|
|
45
46
|
[OnRampErrorType.INCOMPATIBLE_REQUEST]: {
|
|
46
47
|
type: OnRampErrorType.INCOMPATIBLE_REQUEST,
|
|
47
|
-
message: '
|
|
48
|
+
message: 'Enter a valid amount'
|
|
48
49
|
},
|
|
49
50
|
[OnRampErrorType.BAD_REQUEST]: {
|
|
50
51
|
type: OnRampErrorType.BAD_REQUEST,
|
|
51
|
-
message: '
|
|
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
|
-
|
|
118
|
-
|
|
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
|
|
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
|
-
|
|
263
|
-
|
|
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
|
|
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
|
-
|
|
340
|
-
|
|
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
|
-
|
|
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 ===
|
|
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
|
|
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 {
|
|
3
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
106
|
+
return !!state._clipboardClient;
|
|
108
107
|
},
|
|
109
108
|
|
|
110
109
|
copyToClipboard(value: string) {
|
|
111
|
-
const client = state.
|
|
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 '
|
|
3
|
+
import type { CaipNetworkId } from '../utils/TypeUtil.js';
|
|
4
4
|
|
|
5
5
|
// -- Types --------------------------------------------- //
|
|
6
6
|
export interface PublicStateControllerState {
|
|
@@ -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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
161
|
-
const address = CoreHelperUtil.getPlainAddress(
|
|
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:
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
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
|
-
|
|
491
|
+
state.loadingQuote = false;
|
|
499
492
|
|
|
500
|
-
|
|
493
|
+
const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
|
|
501
494
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
495
|
+
if (!quoteToAmount) {
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
505
498
|
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
499
|
+
const toTokenAmount = NumberUtil.bigNumber(quoteToAmount)
|
|
500
|
+
.dividedBy(10 ** toToken.decimals)
|
|
501
|
+
.toString();
|
|
509
502
|
|
|
510
|
-
|
|
503
|
+
this.setToTokenAmount(toTokenAmount);
|
|
511
504
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
505
|
+
const isInsufficientToken = this.hasInsufficientToken(
|
|
506
|
+
state.sourceTokenAmount,
|
|
507
|
+
sourceToken.address
|
|
508
|
+
);
|
|
516
509
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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';
|