[skipci] save

This commit is contained in:
Matthew Fosse 2024-03-25 12:13:54 -07:00
parent 2cd9ba42d2
commit c43ccdd177
4 changed files with 72 additions and 25 deletions

View file

@ -385,17 +385,19 @@ Future<void> setup({
fiatConvertationStore: getIt.get<FiatConversionStore>()));
getIt.registerFactory(() => DashboardViewModel(
balanceViewModel: getIt.get<BalanceViewModel>(),
appStore: getIt.get<AppStore>(),
tradesStore: getIt.get<TradesStore>(),
tradeFilterStore: getIt.get<TradeFilterStore>(),
transactionFilterStore: getIt.get<TransactionFilterStore>(),
settingsStore: settingsStore,
yatStore: getIt.get<YatStore>(),
ordersStore: getIt.get<OrdersStore>(),
anonpayTransactionsStore: getIt.get<AnonpayTransactionsStore>(),
sharedPreferences: getIt.get<SharedPreferences>(),
keyService: getIt.get<KeyService>()));
balanceViewModel: getIt.get<BalanceViewModel>(),
appStore: getIt.get<AppStore>(),
tradesStore: getIt.get<TradesStore>(),
tradeFilterStore: getIt.get<TradeFilterStore>(),
transactionFilterStore: getIt.get<TransactionFilterStore>(),
settingsStore: settingsStore,
yatStore: getIt.get<YatStore>(),
ordersStore: getIt.get<OrdersStore>(),
anonpayTransactionsStore: getIt.get<AnonpayTransactionsStore>(),
sharedPreferences: getIt.get<SharedPreferences>(),
keyService: getIt.get<KeyService>(),
lightningViewModel: getIt.get<LightningViewModel>(),
));
getIt.registerFactory<AuthService>(
() => AuthService(

View file

@ -8,6 +8,7 @@ import 'package:cake_wallet/src/screens/dashboard/pages/nft_listing_page.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/home_screen_account_widget.dart';
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart';
import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart';
import 'package:cake_wallet/src/widgets/introducing_card.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
@ -170,6 +171,20 @@ class CryptoBalanceWidget extends StatelessWidget {
),
],
)),
Observer(builder: (_) {
final serviceMessage = dashboardViewModel.serviceMessage;
if (serviceMessage.isEmpty) {
return const SizedBox();
}
return Padding(
padding: const EdgeInsets.fromLTRB(24, 0, 24, 8),
child: DashBoardRoundedCardWidget(
onTap: () => null,
title: S.of(context).warning,
subTitle: serviceMessage,
),
);
}),
Observer(
builder: (_) {
if (dashboardViewModel.balanceViewModel.isShowCard &&

View file

@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:breez_sdk/bridge_generated.dart';
import 'package:cake_wallet/buy/buy_provider.dart';
import 'package:cake_wallet/core/key_service.dart';
import 'package:cake_wallet/entities/auto_generate_subaddress_status.dart';
@ -28,6 +29,7 @@ import 'package:cake_wallet/view_model/dashboard/formatted_item_list.dart';
import 'package:cake_wallet/view_model/dashboard/order_list_item.dart';
import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart';
import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart';
import 'package:cake_wallet/view_model/lightning_view_model.dart';
import 'package:cake_wallet/view_model/settings/sync_mode.dart';
import 'package:cake_wallet/wallet_type_utils.dart';
import 'package:cryptography/cryptography.dart';
@ -52,19 +54,20 @@ part 'dashboard_view_model.g.dart';
class DashboardViewModel = DashboardViewModelBase with _$DashboardViewModel;
abstract class DashboardViewModelBase with Store {
DashboardViewModelBase(
{required this.balanceViewModel,
required this.appStore,
required this.tradesStore,
required this.tradeFilterStore,
required this.transactionFilterStore,
required this.settingsStore,
required this.yatStore,
required this.ordersStore,
required this.anonpayTransactionsStore,
required this.sharedPreferences,
required this.keyService})
: hasSellAction = false,
DashboardViewModelBase({
required this.balanceViewModel,
required this.appStore,
required this.tradesStore,
required this.tradeFilterStore,
required this.transactionFilterStore,
required this.settingsStore,
required this.yatStore,
required this.ordersStore,
required this.anonpayTransactionsStore,
required this.sharedPreferences,
required this.keyService,
required this.lightningViewModel,
}) : hasSellAction = false,
hasBuyAction = false,
hasExchangeAction = false,
isShowFirstYatIntroduction = false,
@ -304,6 +307,8 @@ abstract class DashboardViewModelBase with Store {
TransactionFilterStore transactionFilterStore;
LightningViewModel lightningViewModel;
Map<String, List<FilterItem>> filterItems;
BuyProvider? get defaultBuyProvider => ProvidersHelper.getProviderByType(
@ -370,6 +375,21 @@ abstract class DashboardViewModelBase with Store {
@computed
bool get hasPowNodes => wallet.type == WalletType.nano || wallet.type == WalletType.banano;
String get serviceMessage {
if (wallet.type == WalletType.lightning) {
final serviceStatus = lightningViewModel.serviceHealthCheck();
if (serviceStatus == HealthCheckStatus.ServiceDisruption) {
return "The breez service is currently experiencing issues. Please try again later.";
} else if (serviceStatus == HealthCheckStatus.Maintenance) {
return "The breez service is currently undergoing maintenance. Please try again later.";
} else {
return "NORMAL";
}
}
return "";
}
Future<void> reconnect() async {
final node = appStore.settingsStore.getCurrentNode(wallet.type);
await wallet.connectToNode(node: node);

View file

@ -37,7 +37,7 @@ abstract class LightningViewModelBase with Store {
fee = openingFees.usedFeeParams!.minMsat ~/ 1000;
}
} catch (_) {}
return ReceiveOnchainResult(
bitcoinAddress: swapInfo.bitcoinAddress,
minAllowedDeposit: swapInfo.minAllowedDeposit,
@ -95,6 +95,16 @@ abstract class LightningViewModelBase with Store {
return 0;
}
}
Future<BZG.HealthCheckStatus> serviceHealthCheck() async {
try {
final sdk = await BreezSDK();
BZG.ServiceHealthCheckResponse response = await sdk.serviceHealthCheck();
return response.status;
} catch (_) {
return BZG.HealthCheckStatus.ServiceDisruption;
}
}
}
class ReceiveOnchainResult {