@reown/appkit-core-react-native 0.0.0-feat-coinbase-20250722184953 → 0.0.0-feat-onramp-20250722205908
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/AccountController.js +17 -20
- package/lib/commonjs/controllers/AccountController.js.map +1 -1
- package/lib/commonjs/controllers/ApiController.js +16 -28
- package/lib/commonjs/controllers/ApiController.js.map +1 -1
- package/lib/commonjs/controllers/BlockchainApiController.js +74 -204
- package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectionController.js +11 -8
- package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectorController.js +49 -0
- package/lib/commonjs/controllers/ConnectorController.js.map +1 -0
- package/lib/commonjs/controllers/EnsController.js +4 -4
- package/lib/commonjs/controllers/EnsController.js.map +1 -1
- package/lib/commonjs/controllers/EventsController.js +4 -4
- package/lib/commonjs/controllers/EventsController.js.map +1 -1
- package/lib/commonjs/controllers/ModalController.js +7 -6
- package/lib/commonjs/controllers/ModalController.js.map +1 -1
- package/lib/commonjs/controllers/OnRampController.js +69 -22
- package/lib/commonjs/controllers/OnRampController.js.map +1 -1
- package/lib/commonjs/controllers/OptionsController.js +3 -11
- package/lib/commonjs/controllers/OptionsController.js.map +1 -1
- package/lib/commonjs/controllers/RouterController.js +22 -1
- package/lib/commonjs/controllers/RouterController.js.map +1 -1
- package/lib/commonjs/controllers/SendController.js +101 -101
- package/lib/commonjs/controllers/SendController.js.map +1 -1
- package/lib/commonjs/controllers/SnackController.js +5 -29
- package/lib/commonjs/controllers/SnackController.js.map +1 -1
- package/lib/commonjs/controllers/SwapController.js +150 -151
- 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 +21 -25
- package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
- package/lib/commonjs/controllers/WebviewController.js +52 -0
- package/lib/commonjs/controllers/WebviewController.js.map +1 -0
- package/lib/commonjs/index.js +24 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/AssetUtil.js +15 -3
- 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 +9 -538
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
- package/lib/commonjs/utils/CoreHelperUtil.js +6 -12
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
- package/lib/commonjs/utils/FetchUtil.js +28 -9
- package/lib/commonjs/utils/FetchUtil.js.map +1 -1
- package/lib/commonjs/utils/NetworkUtil.js +46 -0
- package/lib/commonjs/utils/NetworkUtil.js.map +1 -0
- package/lib/commonjs/utils/StorageUtil.js +42 -51
- package/lib/commonjs/utils/StorageUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapApiUtil.js +21 -15
- package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
- package/lib/module/controllers/AccountController.js +17 -20
- package/lib/module/controllers/AccountController.js.map +1 -1
- package/lib/module/controllers/ApiController.js +16 -27
- package/lib/module/controllers/ApiController.js.map +1 -1
- package/lib/module/controllers/BlockchainApiController.js +73 -203
- package/lib/module/controllers/BlockchainApiController.js.map +1 -1
- package/lib/module/controllers/ConnectionController.js +11 -8
- package/lib/module/controllers/ConnectionController.js.map +1 -1
- package/lib/module/controllers/ConnectorController.js +44 -0
- package/lib/module/controllers/ConnectorController.js.map +1 -0
- package/lib/module/controllers/EnsController.js +2 -2
- package/lib/module/controllers/EnsController.js.map +1 -1
- package/lib/module/controllers/EventsController.js +1 -1
- package/lib/module/controllers/EventsController.js.map +1 -1
- package/lib/module/controllers/ModalController.js +7 -6
- package/lib/module/controllers/ModalController.js.map +1 -1
- package/lib/module/controllers/OnRampController.js +70 -23
- package/lib/module/controllers/OnRampController.js.map +1 -1
- package/lib/module/controllers/OptionsController.js +3 -11
- package/lib/module/controllers/OptionsController.js.map +1 -1
- package/lib/module/controllers/RouterController.js +22 -1
- package/lib/module/controllers/RouterController.js.map +1 -1
- package/lib/module/controllers/SendController.js +98 -98
- package/lib/module/controllers/SendController.js.map +1 -1
- package/lib/module/controllers/SnackController.js +5 -29
- package/lib/module/controllers/SnackController.js.map +1 -1
- package/lib/module/controllers/SwapController.js +150 -151
- 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 +19 -23
- package/lib/module/controllers/TransactionsController.js.map +1 -1
- package/lib/module/controllers/WebviewController.js +47 -0
- package/lib/module/controllers/WebviewController.js.map +1 -0
- package/lib/module/index.js +4 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/AssetUtil.js +15 -3
- 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 +9 -538
- package/lib/module/utils/ConstantsUtil.js.map +1 -1
- package/lib/module/utils/CoreHelperUtil.js +6 -12
- package/lib/module/utils/CoreHelperUtil.js.map +1 -1
- package/lib/module/utils/FetchUtil.js +28 -9
- package/lib/module/utils/FetchUtil.js.map +1 -1
- package/lib/module/utils/NetworkUtil.js +40 -0
- package/lib/module/utils/NetworkUtil.js.map +1 -0
- package/lib/module/utils/StorageUtil.js +42 -51
- package/lib/module/utils/StorageUtil.js.map +1 -1
- package/lib/module/utils/SwapApiUtil.js +21 -15
- package/lib/module/utils/SwapApiUtil.js.map +1 -1
- package/lib/typescript/controllers/AccountController.d.ts +4 -4
- package/lib/typescript/controllers/AccountController.d.ts.map +1 -1
- package/lib/typescript/controllers/ApiController.d.ts +2 -3
- package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/BlockchainApiController.d.ts +15 -29
- package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectionController.d.ts +11 -3
- package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectorController.d.ts +18 -0
- package/lib/typescript/controllers/ConnectorController.d.ts.map +1 -0
- 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 -7
- 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 +16 -4
- package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
- package/lib/typescript/controllers/SendController.d.ts +7 -5
- package/lib/typescript/controllers/SendController.d.ts.map +1 -1
- package/lib/typescript/controllers/SnackController.d.ts +3 -3
- package/lib/typescript/controllers/SnackController.d.ts.map +1 -1
- package/lib/typescript/controllers/SwapController.d.ts +11 -12
- 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/controllers/TransactionsController.d.ts +3 -3
- package/lib/typescript/controllers/TransactionsController.d.ts.map +1 -1
- package/lib/typescript/controllers/WebviewController.d.ts +21 -0
- package/lib/typescript/controllers/WebviewController.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +4 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/AssetUtil.d.ts +3 -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 +3 -422
- package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
- package/lib/typescript/utils/CoreHelperUtil.d.ts +4 -5
- 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 +8 -0
- package/lib/typescript/utils/NetworkUtil.d.ts.map +1 -0
- package/lib/typescript/utils/StorageUtil.d.ts +7 -14
- package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
- package/lib/typescript/utils/SwapApiUtil.d.ts +3 -3
- package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
- package/lib/typescript/utils/TypeUtil.d.ts +191 -42
- package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/controllers/AccountController.ts +27 -23
- package/src/controllers/ApiController.ts +10 -29
- package/src/controllers/BlockchainApiController.ts +65 -179
- package/src/controllers/ConnectionController.ts +24 -12
- package/src/controllers/ConnectorController.ts +63 -0
- package/src/controllers/EnsController.ts +2 -2
- package/src/controllers/EventsController.ts +1 -1
- package/src/controllers/ModalController.ts +8 -8
- package/src/controllers/NetworkController.ts +1 -1
- package/src/controllers/OnRampController.ts +99 -35
- package/src/controllers/OptionsController.ts +13 -19
- package/src/controllers/PublicStateController.ts +1 -1
- package/src/controllers/RouterController.ts +54 -5
- package/src/controllers/SendController.ts +113 -124
- package/src/controllers/SnackController.ts +5 -31
- package/src/controllers/SwapController.ts +181 -174
- package/src/controllers/ThemeController.ts +2 -11
- package/src/controllers/TransactionsController.ts +20 -26
- package/src/controllers/WebviewController.ts +63 -0
- package/src/index.ts +6 -3
- package/src/utils/AssetUtil.ts +20 -4
- package/src/utils/ConnectionUtil.ts +27 -0
- package/src/utils/ConstantsUtil.ts +9 -544
- package/src/utils/CoreHelperUtil.ts +9 -34
- package/src/utils/FetchUtil.ts +31 -10
- package/src/utils/NetworkUtil.ts +33 -0
- package/src/utils/StorageUtil.ts +48 -60
- package/src/utils/SwapApiUtil.ts +38 -27
- package/src/utils/TypeUtil.ts +193 -43
- package/lib/commonjs/controllers/ConnectionsController.js +0 -387
- package/lib/commonjs/controllers/ConnectionsController.js.map +0 -1
- package/lib/module/controllers/ConnectionsController.js +0 -382
- package/lib/module/controllers/ConnectionsController.js.map +0 -1
- package/lib/typescript/controllers/ConnectionsController.d.ts +0 -53
- package/lib/typescript/controllers/ConnectionsController.d.ts.map +0 -1
- package/src/controllers/ConnectionsController.ts +0 -509
|
@@ -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';
|
|
@@ -20,7 +21,7 @@ import { ConstantsUtil, OnRampErrorType } from '../utils/ConstantsUtil';
|
|
|
20
21
|
import { StorageUtil } from '../utils/StorageUtil';
|
|
21
22
|
import { SnackController } from './SnackController';
|
|
22
23
|
import { EventsController } from './EventsController';
|
|
23
|
-
import { BlockchainApiController } from './BlockchainApiController';
|
|
24
|
+
import { BlockchainApiController, EXCLUDED_ONRAMP_PROVIDERS } from './BlockchainApiController';
|
|
24
25
|
|
|
25
26
|
// -- Helpers ------------------------------------------- //
|
|
26
27
|
|
|
@@ -32,23 +33,27 @@ 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'
|
|
53
|
+
},
|
|
54
|
+
[OnRampErrorType.NO_VALID_QUOTES]: {
|
|
55
|
+
type: OnRampErrorType.NO_VALID_QUOTES,
|
|
56
|
+
message: 'No quotes available'
|
|
52
57
|
}
|
|
53
58
|
};
|
|
54
59
|
|
|
@@ -63,6 +68,7 @@ const mapErrorMessage = (errorCode: string): OnRampError => {
|
|
|
63
68
|
// -- Types --------------------------------------------- //
|
|
64
69
|
export interface OnRampControllerState {
|
|
65
70
|
countries: OnRampCountry[];
|
|
71
|
+
countriesDefaults?: OnRampCountryDefaults[];
|
|
66
72
|
selectedCountry?: OnRampCountry;
|
|
67
73
|
serviceProviders: OnRampServiceProvider[];
|
|
68
74
|
selectedServiceProvider?: OnRampServiceProvider;
|
|
@@ -114,9 +120,8 @@ export const OnRampController = {
|
|
|
114
120
|
|
|
115
121
|
if (updateCurrency) {
|
|
116
122
|
const currencyCode =
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
] || 'USD';
|
|
123
|
+
state.countriesDefaults?.find(d => d.countryCode === country.countryCode)
|
|
124
|
+
?.defaultCurrencyCode || 'USD';
|
|
120
125
|
|
|
121
126
|
const currency = state.paymentCurrencies?.find(c => c.currencyCode === currencyCode);
|
|
122
127
|
|
|
@@ -126,6 +131,7 @@ export const OnRampController = {
|
|
|
126
131
|
}
|
|
127
132
|
|
|
128
133
|
await Promise.all([this.fetchPaymentMethods(), this.fetchCryptoCurrencies()]);
|
|
134
|
+
this.clearQuotes();
|
|
129
135
|
|
|
130
136
|
state.loading = false;
|
|
131
137
|
|
|
@@ -134,8 +140,6 @@ export const OnRampController = {
|
|
|
134
140
|
|
|
135
141
|
setSelectedPaymentMethod(paymentMethod: OnRampPaymentMethod) {
|
|
136
142
|
state.selectedPaymentMethod = paymentMethod;
|
|
137
|
-
|
|
138
|
-
this.clearQuotes();
|
|
139
143
|
},
|
|
140
144
|
|
|
141
145
|
setPurchaseCurrency(currency: OnRampCryptoCurrency) {
|
|
@@ -184,7 +188,7 @@ export const OnRampController = {
|
|
|
184
188
|
selectedCurrency = state.purchaseCurrencies?.find(c => c.currencyCode === defaultCurrency);
|
|
185
189
|
}
|
|
186
190
|
|
|
187
|
-
state.purchaseCurrency = selectedCurrency
|
|
191
|
+
state.purchaseCurrency = selectedCurrency ?? state.purchaseCurrencies?.[0] ?? undefined;
|
|
188
192
|
},
|
|
189
193
|
|
|
190
194
|
getServiceProviderImage(serviceProviderName?: string) {
|
|
@@ -231,6 +235,27 @@ export const OnRampController = {
|
|
|
231
235
|
}
|
|
232
236
|
},
|
|
233
237
|
|
|
238
|
+
async fetchCountriesDefaults() {
|
|
239
|
+
try {
|
|
240
|
+
let countriesDefaults = await StorageUtil.getOnRampCountriesDefaults();
|
|
241
|
+
|
|
242
|
+
if (!countriesDefaults.length) {
|
|
243
|
+
countriesDefaults = (await BlockchainApiController.fetchOnRampCountriesDefaults()) ?? [];
|
|
244
|
+
|
|
245
|
+
if (countriesDefaults.length) {
|
|
246
|
+
StorageUtil.setOnRampCountriesDefaults(countriesDefaults);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
state.countriesDefaults = countriesDefaults;
|
|
251
|
+
} catch (error) {
|
|
252
|
+
state.error = {
|
|
253
|
+
type: OnRampErrorType.FAILED_TO_LOAD_COUNTRIES,
|
|
254
|
+
message: 'Failed to load countries defaults'
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
|
|
234
259
|
async fetchServiceProviders() {
|
|
235
260
|
try {
|
|
236
261
|
let serviceProviders = await StorageUtil.getOnRampServiceProviders();
|
|
@@ -259,10 +284,8 @@ export const OnRampController = {
|
|
|
259
284
|
});
|
|
260
285
|
|
|
261
286
|
const defaultCountryPaymentMethods =
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
?.countryCode as keyof typeof ConstantsUtil.COUNTRY_DEFAULT_PAYMENT_METHOD
|
|
265
|
-
];
|
|
287
|
+
state.countriesDefaults?.find(d => d.countryCode === state.selectedCountry?.countryCode)
|
|
288
|
+
?.defaultPaymentMethods || [];
|
|
266
289
|
|
|
267
290
|
state.paymentMethods =
|
|
268
291
|
paymentMethods?.sort((a, b) => {
|
|
@@ -276,9 +299,7 @@ export const OnRampController = {
|
|
|
276
299
|
return aIndex - bIndex;
|
|
277
300
|
}) || [];
|
|
278
301
|
|
|
279
|
-
state.selectedPaymentMethod = paymentMethods
|
|
280
|
-
|
|
281
|
-
this.clearQuotes();
|
|
302
|
+
state.selectedPaymentMethod = state.paymentMethods[0];
|
|
282
303
|
} catch (error) {
|
|
283
304
|
state.error = {
|
|
284
305
|
type: OnRampErrorType.FAILED_TO_LOAD_METHODS,
|
|
@@ -336,9 +357,8 @@ export const OnRampController = {
|
|
|
336
357
|
|
|
337
358
|
if (countryCode) {
|
|
338
359
|
currencyCode =
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
];
|
|
360
|
+
state.countriesDefaults?.find(d => d.countryCode === countryCode)?.defaultCurrencyCode ||
|
|
361
|
+
'USD';
|
|
342
362
|
}
|
|
343
363
|
|
|
344
364
|
const preferredCurrency = await StorageUtil.getOnRampPreferredFiatCurrency();
|
|
@@ -387,36 +407,75 @@ export const OnRampController = {
|
|
|
387
407
|
}
|
|
388
408
|
|
|
389
409
|
state.quotesLoading = true;
|
|
410
|
+
state.selectedQuote = undefined;
|
|
411
|
+
state.selectedServiceProvider = undefined;
|
|
390
412
|
state.error = undefined;
|
|
391
413
|
|
|
392
414
|
this.abortGetQuotes(false);
|
|
393
415
|
quotesAbortController = new AbortController();
|
|
416
|
+
const currentSignal = quotesAbortController.signal;
|
|
394
417
|
|
|
395
418
|
try {
|
|
396
419
|
const body = {
|
|
397
420
|
countryCode: state.selectedCountry?.countryCode!,
|
|
398
|
-
paymentMethodType: state.selectedPaymentMethod?.paymentMethod!,
|
|
399
421
|
destinationCurrencyCode: state.purchaseCurrency?.currencyCode!,
|
|
400
422
|
sourceAmount: state.paymentAmount,
|
|
401
423
|
sourceCurrencyCode: state.paymentCurrency?.currencyCode!,
|
|
402
|
-
walletAddress: AccountController.state.address
|
|
424
|
+
walletAddress: AccountController.state.address!,
|
|
425
|
+
excludeProviders: EXCLUDED_ONRAMP_PROVIDERS
|
|
403
426
|
};
|
|
404
427
|
|
|
405
|
-
const response = await BlockchainApiController.getOnRampQuotes(
|
|
406
|
-
body,
|
|
407
|
-
quotesAbortController.signal
|
|
408
|
-
);
|
|
428
|
+
const response = await BlockchainApiController.getOnRampQuotes(body, currentSignal);
|
|
409
429
|
|
|
410
430
|
if (!response || !response.length) {
|
|
411
|
-
throw
|
|
431
|
+
throw { code: OnRampErrorType.NO_VALID_QUOTES };
|
|
412
432
|
}
|
|
413
433
|
|
|
414
434
|
const quotes = response.sort((a, b) => b.customerScore - a.customerScore);
|
|
415
435
|
|
|
416
436
|
state.quotes = quotes;
|
|
417
|
-
|
|
437
|
+
|
|
438
|
+
//Replace payment method if it's not in the quotes
|
|
439
|
+
const isValidPaymentMethod =
|
|
440
|
+
state.selectedPaymentMethod &&
|
|
441
|
+
quotes.some(
|
|
442
|
+
quote => quote.paymentMethodType === state.selectedPaymentMethod?.paymentMethod
|
|
443
|
+
);
|
|
444
|
+
|
|
445
|
+
if (!isValidPaymentMethod) {
|
|
446
|
+
const countryMethods =
|
|
447
|
+
state.countriesDefaults?.find(d => d.countryCode === state.selectedCountry?.countryCode)
|
|
448
|
+
?.defaultPaymentMethods || [];
|
|
449
|
+
|
|
450
|
+
const availableQuoteMethods = new Set(quotes.map(q => q.paymentMethodType));
|
|
451
|
+
|
|
452
|
+
let newPaymentMethodType: string | undefined;
|
|
453
|
+
for (const dpm of countryMethods) {
|
|
454
|
+
if (availableQuoteMethods.has(dpm)) {
|
|
455
|
+
newPaymentMethodType = dpm;
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
if (newPaymentMethodType) {
|
|
461
|
+
state.selectedPaymentMethod =
|
|
462
|
+
state.paymentMethods.find(m => m.paymentMethod === newPaymentMethodType) ||
|
|
463
|
+
state.paymentMethods.find(
|
|
464
|
+
method => method.paymentMethod === quotes[0]?.paymentMethodType
|
|
465
|
+
);
|
|
466
|
+
} else {
|
|
467
|
+
state.selectedPaymentMethod = state.paymentMethods.find(
|
|
468
|
+
method => method.paymentMethod === quotes[0]?.paymentMethodType
|
|
469
|
+
);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
state.selectedQuote = quotes.find(
|
|
474
|
+
quote => quote.paymentMethodType === state.selectedPaymentMethod?.paymentMethod
|
|
475
|
+
);
|
|
476
|
+
|
|
418
477
|
state.selectedServiceProvider = state.serviceProviders.find(
|
|
419
|
-
sp => sp.serviceProvider ===
|
|
478
|
+
sp => sp.serviceProvider === state.selectedQuote?.serviceProvider
|
|
420
479
|
);
|
|
421
480
|
} catch (error: any) {
|
|
422
481
|
if (error.name === 'AbortError') {
|
|
@@ -435,7 +494,9 @@ export const OnRampController = {
|
|
|
435
494
|
this.clearQuotes();
|
|
436
495
|
state.error = mapErrorMessage(error?.code || 'UNKNOWN_ERROR');
|
|
437
496
|
} finally {
|
|
438
|
-
|
|
497
|
+
if (!currentSignal.aborted) {
|
|
498
|
+
state.quotesLoading = false;
|
|
499
|
+
}
|
|
439
500
|
}
|
|
440
501
|
},
|
|
441
502
|
|
|
@@ -492,7 +553,7 @@ export const OnRampController = {
|
|
|
492
553
|
throw new Error('Invalid quote');
|
|
493
554
|
}
|
|
494
555
|
|
|
495
|
-
const
|
|
556
|
+
const body = {
|
|
496
557
|
countryCode: quote.countryCode,
|
|
497
558
|
destinationCurrencyCode: quote.destinationCurrencyCode,
|
|
498
559
|
paymentMethodType: quote.paymentMethodType,
|
|
@@ -501,7 +562,9 @@ export const OnRampController = {
|
|
|
501
562
|
sourceCurrencyCode: quote.sourceCurrencyCode,
|
|
502
563
|
walletAddress: AccountController.state.address!,
|
|
503
564
|
redirectUrl: metadata?.redirect?.universal ?? metadata?.redirect?.native
|
|
504
|
-
}
|
|
565
|
+
};
|
|
566
|
+
|
|
567
|
+
const widget = await BlockchainApiController.getOnRampWidget(body);
|
|
505
568
|
|
|
506
569
|
if (!widget || !widget.widgetUrl) {
|
|
507
570
|
throw new Error('Invalid widget response');
|
|
@@ -555,6 +618,7 @@ export const OnRampController = {
|
|
|
555
618
|
await this.fetchServiceProviders();
|
|
556
619
|
|
|
557
620
|
await Promise.all([
|
|
621
|
+
this.fetchCountriesDefaults(),
|
|
558
622
|
this.fetchPaymentMethods(),
|
|
559
623
|
this.fetchFiatLimits(),
|
|
560
624
|
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[];
|
|
@@ -26,7 +31,6 @@ export interface OptionsControllerState {
|
|
|
26
31
|
isOnRampEnabled?: boolean;
|
|
27
32
|
features?: Features;
|
|
28
33
|
debug?: boolean;
|
|
29
|
-
defaultNetwork?: AppKitNetwork;
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
// -- State --------------------------------------------- //
|
|
@@ -43,7 +47,7 @@ export const OptionsController = {
|
|
|
43
47
|
state,
|
|
44
48
|
|
|
45
49
|
setClipboardClient(client: ClipboardClient) {
|
|
46
|
-
state.
|
|
50
|
+
state._clipboardClient = ref(client);
|
|
47
51
|
},
|
|
48
52
|
|
|
49
53
|
setProjectId(projectId: OptionsControllerState['projectId']) {
|
|
@@ -98,22 +102,12 @@ export const OptionsController = {
|
|
|
98
102
|
state.isOnRampEnabled = isOnRampEnabled;
|
|
99
103
|
},
|
|
100
104
|
|
|
101
|
-
setStorage(storage?: OptionsControllerState['storage']) {
|
|
102
|
-
if (storage) {
|
|
103
|
-
state.storage = ref(storage);
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
|
|
107
|
-
setDefaultNetwork(defaultNetwork?: OptionsControllerState['defaultNetwork']) {
|
|
108
|
-
state.defaultNetwork = defaultNetwork;
|
|
109
|
-
},
|
|
110
|
-
|
|
111
105
|
isClipboardAvailable() {
|
|
112
|
-
return !!state.
|
|
106
|
+
return !!state._clipboardClient;
|
|
113
107
|
},
|
|
114
108
|
|
|
115
109
|
copyToClipboard(value: string) {
|
|
116
|
-
const client = state.
|
|
110
|
+
const client = state._clipboardClient;
|
|
117
111
|
if (client) {
|
|
118
112
|
client?.setString(value);
|
|
119
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 {
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { proxy } from 'valtio';
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import type {
|
|
3
|
+
WcWallet,
|
|
4
|
+
CaipNetwork,
|
|
5
|
+
Connector,
|
|
6
|
+
SwapInputTarget,
|
|
7
|
+
OnRampTransactionResult
|
|
8
|
+
} from '../utils/TypeUtil';
|
|
5
9
|
|
|
6
10
|
// -- Types --------------------------------------------- //
|
|
11
|
+
type TransactionAction = {
|
|
12
|
+
goBack: boolean;
|
|
13
|
+
view: RouterControllerState['view'] | null;
|
|
14
|
+
close?: boolean;
|
|
15
|
+
replace?: boolean;
|
|
16
|
+
onSuccess?: () => void;
|
|
17
|
+
onCancel?: () => void;
|
|
18
|
+
};
|
|
19
|
+
|
|
7
20
|
export interface RouterControllerState {
|
|
8
21
|
view:
|
|
9
22
|
| 'Account'
|
|
@@ -14,7 +27,11 @@ export interface RouterControllerState {
|
|
|
14
27
|
| 'ConnectingExternal'
|
|
15
28
|
| 'ConnectingSiwe'
|
|
16
29
|
| 'ConnectingSocial'
|
|
30
|
+
| 'ConnectingFarcaster'
|
|
17
31
|
| 'ConnectingWalletConnect'
|
|
32
|
+
| 'Create'
|
|
33
|
+
| 'EmailVerifyDevice'
|
|
34
|
+
| 'EmailVerifyOtp'
|
|
18
35
|
| 'GetWallet'
|
|
19
36
|
| 'Networks'
|
|
20
37
|
| 'OnRamp'
|
|
@@ -24,10 +41,15 @@ export interface RouterControllerState {
|
|
|
24
41
|
| 'OnRampTransaction'
|
|
25
42
|
| 'SwitchNetwork'
|
|
26
43
|
| 'Swap'
|
|
44
|
+
| 'SwapSelectToken'
|
|
27
45
|
| 'SwapPreview'
|
|
28
46
|
| 'Transactions'
|
|
29
47
|
| 'UnsupportedChain'
|
|
48
|
+
| 'UpdateEmailPrimaryOtp'
|
|
49
|
+
| 'UpdateEmailSecondaryOtp'
|
|
50
|
+
| 'UpdateEmailWallet'
|
|
30
51
|
| 'UpgradeEmailWallet'
|
|
52
|
+
| 'UpgradeToSmartAccount'
|
|
31
53
|
| 'WalletCompatibleNetworks'
|
|
32
54
|
| 'WalletReceive'
|
|
33
55
|
| 'WalletSend'
|
|
@@ -37,19 +59,22 @@ export interface RouterControllerState {
|
|
|
37
59
|
| 'WhatIsAWallet';
|
|
38
60
|
history: RouterControllerState['view'][];
|
|
39
61
|
data?: {
|
|
62
|
+
connector?: Connector;
|
|
40
63
|
wallet?: WcWallet;
|
|
41
64
|
network?: CaipNetwork;
|
|
42
65
|
email?: string;
|
|
43
66
|
newEmail?: string;
|
|
67
|
+
swapTarget?: SwapInputTarget;
|
|
44
68
|
onrampResult?: OnRampTransactionResult;
|
|
45
|
-
socialProvider?: SocialProvider;
|
|
46
69
|
};
|
|
70
|
+
transactionStack: TransactionAction[];
|
|
47
71
|
}
|
|
48
72
|
|
|
49
73
|
// -- State --------------------------------------------- //
|
|
50
74
|
const state = proxy<RouterControllerState>({
|
|
51
75
|
view: 'Connect',
|
|
52
|
-
history: ['Connect']
|
|
76
|
+
history: ['Connect'],
|
|
77
|
+
transactionStack: []
|
|
53
78
|
});
|
|
54
79
|
|
|
55
80
|
// -- Controller ---------------------------------------- //
|
|
@@ -64,6 +89,30 @@ export const RouterController = {
|
|
|
64
89
|
}
|
|
65
90
|
},
|
|
66
91
|
|
|
92
|
+
pushTransactionStack(action: TransactionAction) {
|
|
93
|
+
state.transactionStack = [...state.transactionStack, action];
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
popTransactionStack(cancel?: boolean) {
|
|
97
|
+
const action = state.transactionStack.pop();
|
|
98
|
+
|
|
99
|
+
if (!action) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (cancel) {
|
|
104
|
+
this.goBack();
|
|
105
|
+
action?.onCancel?.();
|
|
106
|
+
} else {
|
|
107
|
+
if (action.goBack) {
|
|
108
|
+
this.goBack();
|
|
109
|
+
} else if (action.view) {
|
|
110
|
+
this.reset(action.view);
|
|
111
|
+
}
|
|
112
|
+
action?.onSuccess?.();
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
|
|
67
116
|
reset(view: RouterControllerState['view'], data?: RouterControllerState['data']) {
|
|
68
117
|
state.view = view;
|
|
69
118
|
state.history = [view];
|