Skip to content

Commit fdbb368

Browse files
Merge branch 'staging' into fix/paynym
2 parents eebee9b + 2a37aeb commit fdbb368

28 files changed

Lines changed: 1642 additions & 396 deletions
6.04 KB
Loading
6.04 KB
Loading
6.04 KB
Loading

lib/models/isar/exchange_cache/currency.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:isar_community/isar.dart';
1313
import '../../../app_config.dart';
1414
import '../../../services/exchange/change_now/change_now_exchange.dart';
1515
import '../../../services/exchange/exchange.dart';
16+
import '../../../services/exchange/exolix/exolix_exchange.dart';
1617
import '../../../services/exchange/nanswap/nanswap_exchange.dart';
1718
import '../../../services/exchange/trocador/trocador_exchange.dart';
1819
import '../../../services/exchange/wizard_swap/wizard_swap_exchange.dart';
@@ -83,6 +84,8 @@ class Currency {
8384
// already lower case ticker basically
8485
const (ChangeNowExchange) => network,
8586

87+
const (ExolixExchange) => network.toLowerCase(),
88+
8689
// not used at the time being
8790
// case const (SimpleSwapExchange):
8891

lib/pages/exchange_view/exchange_form.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import '../../services/exchange/change_now/change_now_exchange.dart';
3030
import '../../services/exchange/exchange.dart';
3131
import '../../services/exchange/exchange_data_loading_service.dart';
3232
import '../../services/exchange/exchange_response.dart';
33+
import '../../services/exchange/exolix/exolix_exchange.dart';
3334
import '../../services/exchange/nanswap/nanswap_exchange.dart';
3435
import '../../services/exchange/trocador/trocador_exchange.dart';
3536
import '../../services/exchange/wizard_swap/wizard_swap_exchange.dart';
@@ -81,6 +82,7 @@ class _ExchangeFormState extends ConsumerState<ExchangeForm> {
8182
} else {
8283
return [
8384
ChangeNowExchange.instance,
85+
ExolixExchange.instance,
8486
TrocadorExchange.instance,
8587
NanswapExchange.instance,
8688
WizardSwapExchange.instance,

lib/pages/exchange_view/sub_widgets/exchange_provider_option.dart

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import 'package:decimal/decimal.dart';
1212
import 'package:flutter/material.dart';
1313
import 'package:flutter_riverpod/flutter_riverpod.dart';
14-
import 'package:flutter_svg/svg.dart';
1514

1615
import '../../../app_config.dart';
1716
import '../../../models/exchange/aggregate_currency.dart';
@@ -24,7 +23,6 @@ import '../../../themes/stack_colors.dart';
2423
import '../../../utilities/amount/amount.dart';
2524
import '../../../utilities/amount/amount_formatter.dart';
2625
import '../../../utilities/amount/amount_unit.dart';
27-
import '../../../utilities/assets.dart';
2826
import '../../../utilities/enums/exchange_rate_type_enum.dart';
2927
import '../../../utilities/logger.dart';
3028
import '../../../utilities/text_styles.dart';
@@ -37,6 +35,7 @@ import '../../../widgets/desktop/primary_button.dart';
3735
import '../../../widgets/dialogs/basic_dialog.dart';
3836
import '../../../widgets/exchange/trocador/trocador_kyc_info_button.dart';
3937
import '../../../widgets/exchange/trocador/trocador_rating_type_enum.dart';
38+
import '../../../widgets/icon_widgets/exchange_icon.dart';
4039

4140
class ExchangeOption extends ConsumerStatefulWidget {
4241
const ExchangeOption({
@@ -395,25 +394,13 @@ class _ProviderOptionState extends ConsumerState<ExchProviderOption> {
395394
}
396395
},
397396
errorBuilder: (context, error, stackTrace) {
398-
return SvgPicture.asset(
399-
Assets.exchange.getIconFor(
400-
exchangeName: widget.exchange.name,
401-
),
402-
width: isDesktop ? 32 : 24,
403-
height: isDesktop ? 32 : 24,
404-
);
397+
return ExchangeIcon(exchange: widget.exchange);
405398
},
406399
width: isDesktop ? 32 : 24,
407400
height: isDesktop ? 32 : 24,
408401
),
409402
)
410-
: SvgPicture.asset(
411-
Assets.exchange.getIconFor(
412-
exchangeName: widget.exchange.name,
413-
),
414-
width: isDesktop ? 32 : 24,
415-
height: isDesktop ? 32 : 24,
416-
),
403+
: ExchangeIcon(exchange: widget.exchange),
417404
),
418405
),
419406
const SizedBox(width: 10),

lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import '../../../models/exchange/aggregate_currency.dart';
1515
import '../../../providers/providers.dart';
1616
import '../../../services/exchange/change_now/change_now_exchange.dart';
1717
import '../../../services/exchange/exchange.dart';
18+
import '../../../services/exchange/exolix/exolix_exchange.dart';
1819
import '../../../services/exchange/nanswap/nanswap_exchange.dart';
1920
import '../../../services/exchange/trocador/trocador_exchange.dart';
2021
import '../../../services/exchange/wizard_swap/wizard_swap_exchange.dart';
@@ -97,6 +98,11 @@ class _ExchangeProviderOptionsState
9798
sendCurrency: sendCurrency,
9899
receiveCurrency: receivingCurrency,
99100
);
101+
final showExolix = exchangeSupported(
102+
exchangeName: ExolixExchange.exchangeName,
103+
sendCurrency: sendCurrency,
104+
receiveCurrency: receivingCurrency,
105+
);
100106

101107
return RoundedWhiteContainer(
102108
padding: isDesktop ? const EdgeInsets.all(0) : const EdgeInsets.all(12),
@@ -106,6 +112,7 @@ class _ExchangeProviderOptionsState
106112
child: SortedExchangeProviders(
107113
exchangees: [
108114
if (showChangeNow) ChangeNowExchange.instance,
115+
if (showExolix) ExolixExchange.instance,
109116
if (showTrocador) TrocadorExchange.instance,
110117
if (showNanswap) NanswapExchange.instance,
111118
if (showWizardSwap) WizardSwapExchange.instance,

lib/pages/exchange_view/trade_details_view.dart

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import '../../providers/providers.dart';
2929
import '../../route_generator.dart';
3030
import '../../services/exchange/change_now/change_now_exchange.dart';
3131
import '../../services/exchange/exchange.dart';
32+
import '../../services/exchange/exolix/exolix_exchange.dart';
3233
import '../../services/exchange/nanswap/nanswap_exchange.dart';
3334
import '../../services/exchange/simpleswap/simpleswap_exchange.dart';
3435
import '../../services/exchange/trocador/trocador_exchange.dart';
@@ -119,17 +120,21 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
119120
String _fetchIconAssetForStatus(String statusString, IThemeAssets assets) {
120121
ChangeNowTransactionStatus? status;
121122
try {
122-
if (statusString.toLowerCase().startsWith("waiting")) {
123+
if (statusString.toLowerCase().startsWith("waiting") ||
124+
statusString.toLowerCase() == "wait") {
123125
statusString = "Waiting";
124126
}
125127
status = changeNowTransactionStatusFromStringIgnoreCase(statusString);
126128
} on ArgumentError catch (_) {
127129
switch (statusString.toLowerCase()) {
130+
case "confirmed": // exolix case
131+
case "confirmation": // exolix case
128132
case "funds confirming":
129133
case "processing payment":
130134
return assets.txExchangePending;
131135

132136
case "completed":
137+
case "success": // exolix case
133138
return assets.txExchange;
134139

135140
default:
@@ -168,6 +173,7 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
168173
sentFromStack ||
169174
!(trade.status == "New" ||
170175
trade.status == "new" ||
176+
trade.status == "wait" ||
171177
trade.status == "Waiting" ||
172178
trade.status == "waiting" ||
173179
trade.status == "Refunded" ||
@@ -178,6 +184,7 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
178184
trade.status == "expired" ||
179185
trade.status == "Failed" ||
180186
trade.status == "failed" ||
187+
trade.status == "overdue" ||
181188
trade.status.toLowerCase().startsWith("waiting"));
182189

183190
//todo: check if print needed
@@ -202,6 +209,7 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
202209
(trade.status == "New" ||
203210
trade.status == "new" ||
204211
trade.status == "waiting" ||
212+
trade.status == "wait" ||
205213
trade.status == "Waiting");
206214

207215
return ConditionalParent(
@@ -1162,6 +1170,10 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
11621170
url =
11631171
"https://www.wizardswap.io/api/exchange/${trade.tradeId}";
11641172
break;
1173+
case ExolixExchange.exchangeName:
1174+
url =
1175+
"https://exolix.com/transaction/${trade.tradeId}";
1176+
break;
11651177

11661178
default:
11671179
if (trade.exchangeName.startsWith(

lib/services/exchange/exchange.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import '../../models/exchange/response_objects/trade.dart';
1616
import '../../models/isar/exchange_cache/currency.dart';
1717
import 'change_now/change_now_exchange.dart';
1818
import 'exchange_response.dart';
19+
import 'exolix/exolix_exchange.dart';
1920
import 'nanswap/nanswap_exchange.dart';
2021
import 'simpleswap/simpleswap_exchange.dart';
2122
import 'trocador/trocador_exchange.dart';
@@ -38,6 +39,8 @@ abstract class Exchange {
3839
return NanswapExchange.instance;
3940
case WizardSwapExchange.exchangeName:
4041
return WizardSwapExchange.instance;
42+
case ExolixExchange.exchangeName:
43+
return ExolixExchange.instance;
4144
default:
4245
final split = name.split(" ");
4346
if (split.length >= 2) {
@@ -110,6 +113,7 @@ abstract class Exchange {
110113
static List<Exchange> get exchangesWithTorSupport => [
111114
// MajesticBankExchange.instance,
112115
TrocadorExchange.instance,
116+
ExolixExchange.instance, // Maybe??
113117
NanswapExchange.instance, // Maybe??
114118
];
115119

lib/services/exchange/exchange_data_loading_service.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import '../../utilities/logger.dart';
2525
import '../../utilities/prefs.dart';
2626
import '../../utilities/stack_file_system.dart';
2727
import 'change_now/change_now_exchange.dart';
28+
import 'exolix/exolix_exchange.dart';
2829
import 'nanswap/nanswap_exchange.dart';
2930
import 'trocador/trocador_exchange.dart';
3031
import 'wizard_swap/wizard_swap_exchange.dart';
@@ -209,6 +210,7 @@ class ExchangeDataLoadingService {
209210
loadTrocadorCurrencies(),
210211
loadNanswapCurrencies(),
211212
loadWizardSwapCurrencies(),
213+
loadExolixCurrencies(),
212214
];
213215

214216
// If using Tor, don't load data for exchanges which don't support Tor.
@@ -460,6 +462,29 @@ class ExchangeDataLoadingService {
460462
}
461463
}
462464

465+
Future<void> loadExolixCurrencies() async {
466+
if (_isar == null) {
467+
await initDB();
468+
}
469+
final responseCurrencies = await ExolixExchange.instance.getAllCurrencies(
470+
false,
471+
);
472+
473+
if (responseCurrencies.value != null) {
474+
await (await isar).writeTxn(() async {
475+
final idsToDelete = await (await isar).currencies
476+
.where()
477+
.exchangeNameEqualTo(ExolixExchange.exchangeName)
478+
.idProperty()
479+
.findAll();
480+
await (await isar).currencies.deleteAll(idsToDelete);
481+
await (await isar).currencies.putAll(responseCurrencies.value!);
482+
});
483+
} else {
484+
Logging.instance.w("loadExolixCurrencies: $responseCurrencies");
485+
}
486+
}
487+
463488
// Future<void> loadMajesticBankPairs() async {
464489
// final exchange = MajesticBankExchange.instance;
465490
//

0 commit comments

Comments
 (0)