diff --git a/lib/models/exchange/exchange_form_state.dart b/lib/models/exchange/exchange_form_state.dart index 58562e449..32578ebd9 100644 --- a/lib/models/exchange/exchange_form_state.dart +++ b/lib/models/exchange/exchange_form_state.dart @@ -2,7 +2,9 @@ import 'package:decimal/decimal.dart'; import 'package:flutter/foundation.dart'; import 'package:stackwallet/models/exchange/aggregate_currency.dart'; import 'package:stackwallet/models/exchange/response_objects/estimate.dart'; +import 'package:stackwallet/services/exchange/change_now/change_now_exchange.dart'; import 'package:stackwallet/services/exchange/exchange.dart'; +import 'package:stackwallet/services/exchange/majestic_bank/majestic_bank_exchange.dart'; import 'package:stackwallet/utilities/enums/exchange_rate_type_enum.dart'; import 'package:stackwallet/utilities/logger.dart'; @@ -323,28 +325,28 @@ class ExchangeFormState extends ChangeNotifier { required bool shouldNotifyListeners, }) async { try { - // switch (exchange.name) { - // case ChangeNowExchange.exchangeName: - // if (!_exchangeSupported( - // exchangeName: exchange.name, - // sendCurrency: sendCurrency, - // receiveCurrency: receiveCurrency, - // exchangeRateType: exchangeRateType, - // )) { - // _exchange = MajesticBankExchange.instance; - // } - // break; - // case MajesticBankExchange.exchangeName: - // if (!_exchangeSupported( - // exchangeName: exchange.name, - // sendCurrency: sendCurrency, - // receiveCurrency: receiveCurrency, - // exchangeRateType: exchangeRateType, - // )) { - // _exchange = ChangeNowExchange.instance; - // } - // break; - // } + switch (exchange.name) { + case ChangeNowExchange.exchangeName: + if (!_exchangeSupported( + exchangeName: exchange.name, + sendCurrency: sendCurrency, + receiveCurrency: receiveCurrency, + exchangeRateType: exchangeRateType, + )) { + _exchange = MajesticBankExchange.instance; + } + break; + case MajesticBankExchange.exchangeName: + if (!_exchangeSupported( + exchangeName: exchange.name, + sendCurrency: sendCurrency, + receiveCurrency: receiveCurrency, + exchangeRateType: exchangeRateType, + )) { + _exchange = ChangeNowExchange.instance; + } + break; + } await _updateRanges(shouldNotifyListeners: false); await _updateEstimate(shouldNotifyListeners: false); diff --git a/lib/pages/exchange_view/exchange_coin_selection/exchange_currency_selection_view.dart b/lib/pages/exchange_view/exchange_coin_selection/exchange_currency_selection_view.dart index 6980706c3..1b2376b4c 100644 --- a/lib/pages/exchange_view/exchange_coin_selection/exchange_currency_selection_view.dart +++ b/lib/pages/exchange_view/exchange_coin_selection/exchange_currency_selection_view.dart @@ -9,6 +9,7 @@ import 'package:stackwallet/models/isar/exchange_cache/pair.dart'; import 'package:stackwallet/pages/buy_view/sub_widgets/crypto_selection_view.dart'; import 'package:stackwallet/services/exchange/change_now/change_now_exchange.dart'; import 'package:stackwallet/services/exchange/exchange_data_loading_service.dart'; +import 'package:stackwallet/services/exchange/majestic_bank/majestic_bank_exchange.dart'; import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/constants.dart'; import 'package:stackwallet/utilities/enums/coin_enum.dart'; @@ -94,12 +95,11 @@ class _ExchangeCurrencySelectionViewState if (widget.pairedTicker == null) { return await _getCurrencies(); } - List currencies = []; - // await ExchangeDataLoadingService - // .instance.isar.currencies - // .where() - // .exchangeNameEqualTo(MajesticBankExchange.exchangeName) - // .findAll(); + List currencies = await ExchangeDataLoadingService + .instance.isar.currencies + .where() + .exchangeNameEqualTo(MajesticBankExchange.exchangeName) + .findAll(); final cn = await ChangeNowExchange.instance.getPairedCurrencies( widget.pairedTicker!, diff --git a/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart b/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart index 043a10a5e..c0f4312d0 100644 --- a/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart +++ b/lib/pages/exchange_view/sub_widgets/exchange_provider_options.dart @@ -71,12 +71,11 @@ class _ExchangeProviderOptionsState sendCurrency: sendCurrency, receiveCurrency: receivingCurrency, ); - final showMajesticBank = false; - // exchangeSupported( - // exchangeName: MajesticBankExchange.exchangeName, - // sendCurrency: sendCurrency, - // receiveCurrency: receivingCurrency, - // ); + final showMajesticBank = exchangeSupported( + exchangeName: MajesticBankExchange.exchangeName, + sendCurrency: sendCurrency, + receiveCurrency: receivingCurrency, + ); return RoundedWhiteContainer( padding: isDesktop ? const EdgeInsets.all(0) : const EdgeInsets.all(12), diff --git a/lib/pages/exchange_view/trade_details_view.dart b/lib/pages/exchange_view/trade_details_view.dart index ca853c6a4..76653bd18 100644 --- a/lib/pages/exchange_view/trade_details_view.dart +++ b/lib/pages/exchange_view/trade_details_view.dart @@ -93,8 +93,7 @@ class _TradeDetailsViewState extends ConsumerState { .trades .firstWhere((e) => e.tradeId == tradeId); - if (mounted && - trade.exchangeName != MajesticBankExchange.exchangeName) { + if (mounted) { final exchange = Exchange.fromName(trade.exchangeName); final response = await exchange.updateTrade(trade); diff --git a/lib/services/exchange/exchange_data_loading_service.dart b/lib/services/exchange/exchange_data_loading_service.dart index 566640adb..ad754cb56 100644 --- a/lib/services/exchange/exchange_data_loading_service.dart +++ b/lib/services/exchange/exchange_data_loading_service.dart @@ -273,25 +273,25 @@ class ExchangeDataLoadingService { // } Future loadMajesticBankCurrencies() async { - // final exchange = MajesticBankExchange.instance; - // final responseCurrencies = await exchange.getAllCurrencies(false); - // - // if (responseCurrencies.value != null) { - await isar.writeTxn(() async { - final idsToDelete = await isar.currencies - .where() - .exchangeNameEqualTo(MajesticBankExchange.exchangeName) - .idProperty() - .findAll(); - await isar.currencies.deleteAll(idsToDelete); - // await isar.currencies.putAll(responseCurrencies.value!); - }); - // } else { - // Logging.instance.log( - // "loadMajesticBankCurrencies: $responseCurrencies", - // level: LogLevel.Warning, - // ); - // } + final exchange = MajesticBankExchange.instance; + final responseCurrencies = await exchange.getAllCurrencies(false); + + if (responseCurrencies.value != null) { + await isar.writeTxn(() async { + final idsToDelete = await isar.currencies + .where() + .exchangeNameEqualTo(MajesticBankExchange.exchangeName) + .idProperty() + .findAll(); + await isar.currencies.deleteAll(idsToDelete); + await isar.currencies.putAll(responseCurrencies.value!); + }); + } else { + Logging.instance.log( + "loadMajesticBankCurrencies: $responseCurrencies", + level: LogLevel.Warning, + ); + } } // Future loadMajesticBankPairs() async { diff --git a/lib/services/exchange/majestic_bank/majestic_bank_api.dart b/lib/services/exchange/majestic_bank/majestic_bank_api.dart index 5641afd55..61eb886a4 100644 --- a/lib/services/exchange/majestic_bank/majestic_bank_api.dart +++ b/lib/services/exchange/majestic_bank/majestic_bank_api.dart @@ -14,11 +14,10 @@ import 'package:stackwallet/services/exchange/exchange_response.dart'; import 'package:stackwallet/utilities/logger.dart'; class MajesticBankAPI { - // ensure no api calls go out to mb - static const String scheme = ""; //"""https"; - static const String authority = ""; //"""majesticbank.sc"; - static const String version = ""; //"""v1"; - static const kMajesticBankRefCode = ""; //"""rjWugM"; + static const String scheme = "https"; + static const String authority = "majesticbank.sc"; + static const String version = "v1"; + static const kMajesticBankRefCode = "rjWugM"; MajesticBankAPI._(); @@ -34,8 +33,6 @@ class MajesticBankAPI { } Future _makeGetRequest(Uri uri) async { - return null; - final client = this.client ?? http.Client(); int code = -1; try { diff --git a/lib/services/notifications_service.dart b/lib/services/notifications_service.dart index 47170fd70..5408d6126 100644 --- a/lib/services/notifications_service.dart +++ b/lib/services/notifications_service.dart @@ -7,7 +7,6 @@ import 'package:stackwallet/hive/db.dart'; import 'package:stackwallet/models/exchange/response_objects/trade.dart'; import 'package:stackwallet/models/notification_model.dart'; import 'package:stackwallet/services/exchange/exchange_response.dart'; -import 'package:stackwallet/services/exchange/majestic_bank/majestic_bank_exchange.dart'; import 'package:stackwallet/services/node_service.dart'; import 'package:stackwallet/services/notifications_api.dart'; import 'package:stackwallet/services/trade_service.dart'; @@ -198,59 +197,57 @@ class NotificationsService extends ChangeNotifier { final oldTrade = trades.first; late final ExchangeResponse response; - if (oldTrade.exchangeName != MajesticBankExchange.exchangeName) { - try { - final exchange = Exchange.fromName(oldTrade.exchangeName); - response = await exchange.updateTrade(oldTrade); - } catch (_) { - return; + try { + final exchange = Exchange.fromName(oldTrade.exchangeName); + response = await exchange.updateTrade(oldTrade); + } catch (_) { + return; + } + + if (response.value == null) { + return; + } + + final trade = response.value!; + + // only update if status has changed + if (trade.status != notification.title) { + bool shouldWatchForUpdates = true; + // TODO: make sure we set shouldWatchForUpdates to correct value here + switch (trade.status) { + case "Refunded": + case "refunded": + case "Failed": + case "failed": + case "closed": + case "expired": + case "Finished": + case "finished": + case "Completed": + case "completed": + case "Not found": + shouldWatchForUpdates = false; + break; + default: + shouldWatchForUpdates = true; } - if (response.value == null) { - return; + final updatedNotification = notification.copyWith( + title: trade.status, + shouldWatchForUpdates: shouldWatchForUpdates, + ); + + // remove from watch list if shouldWatchForUpdates was changed + if (!shouldWatchForUpdates) { + await _deleteWatchedTradeNotification(notification); } - final trade = response.value!; + // replaces the current notification with the updated one + unawaited(add(updatedNotification, true)); - // only update if status has changed - if (trade.status != notification.title) { - bool shouldWatchForUpdates = true; - // TODO: make sure we set shouldWatchForUpdates to correct value here - switch (trade.status) { - case "Refunded": - case "refunded": - case "Failed": - case "failed": - case "closed": - case "expired": - case "Finished": - case "finished": - case "Completed": - case "completed": - case "Not found": - shouldWatchForUpdates = false; - break; - default: - shouldWatchForUpdates = true; - } - - final updatedNotification = notification.copyWith( - title: trade.status, - shouldWatchForUpdates: shouldWatchForUpdates, - ); - - // remove from watch list if shouldWatchForUpdates was changed - if (!shouldWatchForUpdates) { - await _deleteWatchedTradeNotification(notification); - } - - // replaces the current notification with the updated one - unawaited(add(updatedNotification, true)); - - // update the trade in db - // over write trade stored in db with updated version - await tradesService.edit(trade: trade, shouldNotifyListeners: true); - } + // update the trade in db + // over write trade stored in db with updated version + await tradesService.edit(trade: trade, shouldNotifyListeners: true); } } }