Merge branch 'staging' into xmr_bugs

This commit is contained in:
Diego Salazar 2023-03-27 15:02:24 -06:00 committed by GitHub
commit d792e2aa82
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 150 additions and 131 deletions

View file

@ -2,9 +2,7 @@ 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';
@ -325,28 +323,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);

View file

@ -9,7 +9,6 @@ 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';
@ -95,11 +94,12 @@ class _ExchangeCurrencySelectionViewState
if (widget.pairedTicker == null) {
return await _getCurrencies();
}
List<Currency> currencies = await ExchangeDataLoadingService
.instance.isar.currencies
.where()
.exchangeNameEqualTo(MajesticBankExchange.exchangeName)
.findAll();
List<Currency> currencies = [];
// await ExchangeDataLoadingService
// .instance.isar.currencies
// .where()
// .exchangeNameEqualTo(MajesticBankExchange.exchangeName)
// .findAll();
final cn = await ChangeNowExchange.instance.getPairedCurrencies(
widget.pairedTicker!,

View file

@ -71,11 +71,12 @@ class _ExchangeProviderOptionsState
sendCurrency: sendCurrency,
receiveCurrency: receivingCurrency,
);
final showMajesticBank = exchangeSupported(
exchangeName: MajesticBankExchange.exchangeName,
sendCurrency: sendCurrency,
receiveCurrency: receivingCurrency,
);
final showMajesticBank = false;
// exchangeSupported(
// exchangeName: MajesticBankExchange.exchangeName,
// sendCurrency: sendCurrency,
// receiveCurrency: receivingCurrency,
// );
return RoundedWhiteContainer(
padding: isDesktop ? const EdgeInsets.all(0) : const EdgeInsets.all(12),

View file

@ -93,7 +93,8 @@ class _TradeDetailsViewState extends ConsumerState<TradeDetailsView> {
.trades
.firstWhere((e) => e.tradeId == tradeId);
if (mounted) {
if (mounted &&
trade.exchangeName != MajesticBankExchange.exchangeName) {
final exchange = Exchange.fromName(trade.exchangeName);
final response = await exchange.updateTrade(trade);

View file

@ -148,15 +148,16 @@ class _StackPrivacyCalls extends ConsumerState<StackPrivacyCalls> {
),
children: infoToggle
? [
if (Constants.enableExchange)
const TextSpan(
text:
"Exchange data preloaded for a seamless experience.\n\n"),
const TextSpan(
text:
"Exchange data preloaded for a seamless experience."),
const TextSpan(
text:
"\n\nCoinGecko enabled: (24 hour price change shown in-app, total wallet value shown in USD or other currency)."),
"CoinGecko enabled: (24 hour price change shown in-app, total wallet value shown in USD or other currency).\n\n"),
TextSpan(
text:
"\n\nRecommended for most crypto users.",
"Recommended for most crypto users.",
style: isDesktop
? STextStyles
.desktopTextExtraExtraSmall600(
@ -170,15 +171,16 @@ class _StackPrivacyCalls extends ConsumerState<StackPrivacyCalls> {
),
]
: [
if (Constants.enableExchange)
const TextSpan(
text:
"Exchange data not preloaded (slower experience).\n\n"),
const TextSpan(
text:
"Exchange data not preloaded (slower experience)."),
const TextSpan(
text:
"\n\nCoinGecko disabled (price changes not shown, no wallet value shown in other currencies)."),
"CoinGecko disabled (price changes not shown, no wallet value shown in other currencies).\n\n"),
TextSpan(
text:
"\n\nRecommended for the privacy conscious.",
"Recommended for the privacy conscious.",
style: isDesktop
? STextStyles
.desktopTextExtraExtraSmall600(

View file

@ -968,17 +968,25 @@ class _TransactionDetailsViewState
? const EdgeInsets.all(16)
: const EdgeInsets.all(12),
child: Builder(builder: (context) {
final height = widget.coin != Coin.epicCash &&
_transaction.isConfirmed(
currentHeight,
coin.requiredConfirmations,
)
? "${_transaction.height == 0 ? "Unknown" : _transaction.height}"
: _transaction.getConfirmations(
currentHeight) >
0
? "${_transaction.height}"
: "Pending";
final String height;
if (widget.coin == Coin.bitcoincash ||
widget.coin == Coin.bitcoincashTestnet) {
height =
"${_transaction.height != null && _transaction.height! > 0 ? _transaction.height! : "Pending"}";
} else {
height = widget.coin != Coin.epicCash &&
_transaction.isConfirmed(
currentHeight,
coin.requiredConfirmations,
)
? "${_transaction.height == 0 ? "Unknown" : _transaction.height}"
: _transaction.getConfirmations(
currentHeight) >
0
? "${_transaction.height}"
: "Pending";
}
return Row(
mainAxisAlignment:

View file

@ -96,9 +96,10 @@ class _StackPrivacyDialog extends ConsumerState<StackPrivacyDialog> {
),
children: infoToggle
? [
const TextSpan(
text:
"Exchange data preloaded for a seamless experience."),
if (Constants.enableExchange)
const TextSpan(
text:
"Exchange data preloaded for a seamless experience."),
const TextSpan(
text:
"\n\nCoinGecko enabled: (24 hour price change shown in-app, total wallet value shown in USD or other currency)."),

View file

@ -2114,8 +2114,10 @@ class BitcoinCashWallet extends CoinServiceAPI
.txidEqualTo(txHash["tx_hash"] as String)
.findFirst();
if (storedTx == null ||
!storedTx.isConfirmed(currentHeight, MINIMUM_CONFIRMATIONS)) {
if (storedTx == null || storedTx.address.value == null
// zero conf messes this up
// !storedTx.isConfirmed(currentHeight, MINIMUM_CONFIRMATIONS)
) {
final tx = await cachedElectrumXClient.getTransaction(
txHash: txHash["tx_hash"] as String,
verbose: true,

View file

@ -273,25 +273,25 @@ class ExchangeDataLoadingService {
// }
Future<void> 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<void> loadMajesticBankPairs() async {

View file

@ -14,10 +14,11 @@ import 'package:stackwallet/services/exchange/exchange_response.dart';
import 'package:stackwallet/utilities/logger.dart';
class MajesticBankAPI {
static const String scheme = "https";
static const String authority = "majesticbank.sc";
static const String version = "v1";
static const kMajesticBankRefCode = "rjWugM";
// 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";
MajesticBankAPI._();
@ -33,6 +34,8 @@ class MajesticBankAPI {
}
Future<dynamic> _makeGetRequest(Uri uri) async {
return null;
final client = this.client ?? http.Client();
int code = -1;
try {

View file

@ -7,6 +7,7 @@ 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';
@ -197,57 +198,59 @@ class NotificationsService extends ChangeNotifier {
final oldTrade = trades.first;
late final ExchangeResponse<Trade> response;
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 (oldTrade.exchangeName != MajesticBankExchange.exchangeName) {
try {
final exchange = Exchange.fromName(oldTrade.exchangeName);
response = await exchange.updateTrade(oldTrade);
} catch (_) {
return;
}
final updatedNotification = notification.copyWith(
title: trade.status,
shouldWatchForUpdates: shouldWatchForUpdates,
);
// remove from watch list if shouldWatchForUpdates was changed
if (!shouldWatchForUpdates) {
await _deleteWatchedTradeNotification(notification);
if (response.value == null) {
return;
}
// replaces the current notification with the updated one
unawaited(add(updatedNotification, true));
final trade = response.value!;
// update the trade in db
// over write trade stored in db with updated version
await tradesService.edit(trade: trade, shouldNotifyListeners: 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);
}
}
}
}