From ddbb63ae462501a33c5a6b3520c2d5c3b4adb357 Mon Sep 17 00:00:00 2001 From: Rafael Saes Date: Tue, 9 Apr 2024 16:37:00 -0300 Subject: [PATCH] feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert --- assets/images/cards.svg | 65 ++++++ lib/bitcoin/cw_bitcoin.dart | 26 ++- lib/di.dart | 11 +- lib/src/screens/dashboard/dashboard_page.dart | 10 +- .../desktop_dashboard_actions.dart | 8 +- .../screens/dashboard/pages/balance_page.dart | 44 ---- .../dashboard/pages/cake_features_page.dart | 204 ++++++++++++++++++ .../dashboard/pages/market_place_page.dart | 105 --------- lib/src/screens/rescan/rescan_page.dart | 32 +++ lib/src/widgets/dashboard_card_widget.dart | 63 ++++-- .../dashboard/cake_features_view_model.dart | 16 ++ .../dashboard/dashboard_view_model.dart | 2 +- .../dashboard/market_place_view_model.dart | 17 -- lib/view_model/rescan_view_model.dart | 17 +- res/values/strings_ar.arb | 4 + res/values/strings_bg.arb | 4 + res/values/strings_cs.arb | 4 + res/values/strings_de.arb | 4 + res/values/strings_en.arb | 4 + res/values/strings_es.arb | 4 + res/values/strings_fr.arb | 4 + res/values/strings_ha.arb | 4 + res/values/strings_hi.arb | 4 + res/values/strings_hr.arb | 4 + res/values/strings_id.arb | 4 + res/values/strings_it.arb | 4 + res/values/strings_ja.arb | 4 + res/values/strings_ko.arb | 4 + res/values/strings_my.arb | 4 + res/values/strings_nl.arb | 4 + res/values/strings_pl.arb | 4 + res/values/strings_pt.arb | 4 + res/values/strings_ru.arb | 4 + res/values/strings_th.arb | 4 + res/values/strings_tl.arb | 4 + res/values/strings_tr.arb | 4 + res/values/strings_uk.arb | 4 + res/values/strings_ur.arb | 4 + res/values/strings_yo.arb | 4 + res/values/strings_zh.arb | 4 + tool/configure.dart | 1 + 41 files changed, 516 insertions(+), 209 deletions(-) create mode 100644 assets/images/cards.svg create mode 100644 lib/src/screens/dashboard/pages/cake_features_page.dart delete mode 100644 lib/src/screens/dashboard/pages/market_place_page.dart create mode 100644 lib/view_model/dashboard/cake_features_view_model.dart delete mode 100644 lib/view_model/dashboard/market_place_view_model.dart diff --git a/assets/images/cards.svg b/assets/images/cards.svg new file mode 100644 index 000000000..699f9d311 --- /dev/null +++ b/assets/images/cards.svg @@ -0,0 +1,65 @@ + + + + diff --git a/lib/bitcoin/cw_bitcoin.dart b/lib/bitcoin/cw_bitcoin.dart index 49fdcedab..db1ebcf4a 100644 --- a/lib/bitcoin/cw_bitcoin.dart +++ b/lib/bitcoin/cw_bitcoin.dart @@ -326,8 +326,15 @@ class CWBitcoin extends Bitcoin { return bitcoinWallet.silentPaymentsScanningActive; } - void setScanningActive(Object wallet, bool active) { + Future setScanningActive(Object wallet, SettingsStore settingsStore, bool active) async { final bitcoinWallet = wallet as ElectrumWallet; + // TODO: always when setting to scanning active, will force switch nodes. Remove when not needed anymore + if (!getNodeIsCakeElectrs(wallet)) { + final node = Node(useSSL: false, uri: '198.58.111.154:50002'); + node.type = WalletType.bitcoin; + settingsStore.nodes[WalletType.bitcoin] = node; + await bitcoinWallet.connectToNode(node: node); + } bitcoinWallet.setSilentPaymentsScanning(active); } @@ -339,8 +346,23 @@ class CWBitcoin extends Bitcoin { @override int getHeightByDate({required DateTime date}) => getBitcoinHeightByDate(date: date); - void rescan(Object wallet, {required int height, bool? doSingleScan}) { + Future rescan(Object wallet, SettingsStore settingsStore, + {required int height, bool? doSingleScan}) async { final bitcoinWallet = wallet as ElectrumWallet; + // TODO: always when setting to scanning active, will force switch nodes. Remove when not needed anymore + if (!getNodeIsCakeElectrs(wallet)) { + final node = Node(useSSL: false, uri: '198.58.111.154:50002'); + node.type = WalletType.bitcoin; + settingsStore.nodes[WalletType.bitcoin] = node; + await bitcoinWallet.connectToNode(node: node); + } bitcoinWallet.rescan(height: height, doSingleScan: doSingleScan); } + + bool getNodeIsCakeElectrs(Object wallet) { + final bitcoinWallet = wallet as ElectrumWallet; + final node = bitcoinWallet.node; + + return node?.uri.host == '198.58.111.154' && node?.uri.port == 50002; + } } diff --git a/lib/di.dart b/lib/di.dart index 59a94d1eb..cf5b3f8dc 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -69,7 +69,7 @@ import 'package:cake_wallet/view_model/dashboard/desktop_sidebar_view_model.dart import 'package:cake_wallet/view_model/anon_invoice_page_view_model.dart'; import 'package:cake_wallet/view_model/anonpay_details_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart'; -import 'package:cake_wallet/view_model/dashboard/market_place_view_model.dart'; +import 'package:cake_wallet/view_model/dashboard/cake_features_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/nft_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/receive_option_view_model.dart'; import 'package:cake_wallet/view_model/ionia/ionia_auth_view_model.dart'; @@ -890,7 +890,8 @@ Future setup({ (onSuccessfulPinSetup, _) => SetupPinCodePage(getIt.get(), onSuccessfulPinSetup: onSuccessfulPinSetup)); - getIt.registerFactory(() => RescanViewModel(getIt.get().wallet!)); + getIt.registerFactory( + () => RescanViewModel(getIt.get().wallet!, getIt.get())); getIt.registerFactory(() => RescanPage(getIt.get())); @@ -1048,7 +1049,7 @@ Future setup({ getIt.registerFactory(() => IoniaGiftCardsListViewModel(ioniaService: getIt.get())); - getIt.registerFactory(() => MarketPlaceViewModel(getIt.get())); + getIt.registerFactory(() => CakeFeaturesViewModel(getIt.get())); getIt.registerFactory(() => IoniaAuthViewModel(ioniaService: getIt.get())); @@ -1145,9 +1146,9 @@ Future setup({ getIt.registerFactory(() => IoniaAccountCardsPage(getIt.get())); getIt.registerFactoryParam( - (TransactionInfo transactionInfo, _) => RBFDetailsPage( + (TransactionInfo transactionInfo, _) => RBFDetailsPage( transactionDetailsViewModel: - getIt.get(param1: transactionInfo))); + getIt.get(param1: transactionInfo))); getIt.registerFactory(() => AnonPayApi( useTorOnly: getIt.get().exchangeStatus == ExchangeApiMode.torOnly, diff --git a/lib/src/screens/dashboard/dashboard_page.dart b/lib/src/screens/dashboard/dashboard_page.dart index ed06f4704..2c72995a9 100644 --- a/lib/src/screens/dashboard/dashboard_page.dart +++ b/lib/src/screens/dashboard/dashboard_page.dart @@ -4,7 +4,7 @@ import 'package:cake_wallet/entities/preferences_key.dart'; import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/entities/main_actions.dart'; import 'package:cake_wallet/src/screens/dashboard/desktop_widgets/desktop_sidebar_wrapper.dart'; -import 'package:cake_wallet/src/screens/dashboard/pages/market_place_page.dart'; +import 'package:cake_wallet/src/screens/dashboard/pages/cake_features_page.dart'; import 'package:cake_wallet/src/screens/wallet_connect/widgets/modals/bottom_sheet_listener.dart'; import 'package:cake_wallet/src/widgets/gradient_background.dart'; import 'package:cake_wallet/src/widgets/services_updates_widget.dart'; @@ -12,7 +12,7 @@ import 'package:cake_wallet/src/widgets/vulnerable_seeds_popup.dart'; import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart'; import 'package:cake_wallet/utils/device_info.dart'; import 'package:cake_wallet/utils/version_comparator.dart'; -import 'package:cake_wallet/view_model/dashboard/market_place_view_model.dart'; +import 'package:cake_wallet/view_model/dashboard/cake_features_view_model.dart'; import 'package:cake_wallet/generated/i18n.dart'; import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/yat_emoji_id.dart'; @@ -291,10 +291,10 @@ class _DashboardPageView extends BasePage { if (dashboardViewModel.shouldShowMarketPlaceInDashboard) { pages.add( Semantics( - label: S.of(context).market_place, - child: MarketPlacePage( + label: 'Cake ${S.of(context).features}', + child: CakeFeaturesPage( dashboardViewModel: dashboardViewModel, - marketPlaceViewModel: getIt.get(), + cakeFeaturesViewModel: getIt.get(), ), ), ); diff --git a/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart b/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart index 20ddea361..d36c06013 100644 --- a/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart +++ b/lib/src/screens/dashboard/desktop_widgets/desktop_dashboard_actions.dart @@ -1,9 +1,9 @@ import 'package:cake_wallet/di.dart'; import 'package:cake_wallet/entities/main_actions.dart'; import 'package:cake_wallet/src/screens/dashboard/desktop_widgets/desktop_action_button.dart'; -import 'package:cake_wallet/src/screens/dashboard/pages/market_place_page.dart'; +import 'package:cake_wallet/src/screens/dashboard/pages/cake_features_page.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; -import 'package:cake_wallet/view_model/dashboard/market_place_view_model.dart'; +import 'package:cake_wallet/view_model/dashboard/cake_features_view_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -74,9 +74,9 @@ class DesktopDashboardActions extends StatelessWidget { ], ), Expanded( - child: MarketPlacePage( + child: CakeFeaturesPage( dashboardViewModel: dashboardViewModel, - marketPlaceViewModel: getIt.get(), + cakeFeaturesViewModel: getIt.get(), ), ), ], diff --git a/lib/src/screens/dashboard/pages/balance_page.dart b/lib/src/screens/dashboard/pages/balance_page.dart index 2c77ffcea..312cf3240 100644 --- a/lib/src/screens/dashboard/pages/balance_page.dart +++ b/lib/src/screens/dashboard/pages/balance_page.dart @@ -209,13 +209,6 @@ class CryptoBalanceWidget extends StatelessWidget { currency: balance.asset, hasAdditionalBalance: dashboardViewModel.balanceViewModel.hasAdditionalBalance, - hasSilentPayments: dashboardViewModel.balanceViewModel.hasSilentPayments, - silentPaymentsScanningActive: - dashboardViewModel.silentPaymentsScanningActive, - setSilentPaymentsScanning: () => - dashboardViewModel.setSilentPaymentsScanning( - !dashboardViewModel.silentPaymentsScanningActive, - ), isTestnet: dashboardViewModel.isTestnet, ); }); @@ -242,9 +235,6 @@ class BalanceRowWidget extends StatelessWidget { required this.frozenFiatBalance, required this.currency, required this.hasAdditionalBalance, - required this.hasSilentPayments, - required this.silentPaymentsScanningActive, - required this.setSilentPaymentsScanning, required this.isTestnet, super.key, }); @@ -259,10 +249,7 @@ class BalanceRowWidget extends StatelessWidget { final String frozenFiatBalance; final CryptoCurrency currency; final bool hasAdditionalBalance; - final bool hasSilentPayments; - final bool silentPaymentsScanningActive; final bool isTestnet; - final void Function() setSilentPaymentsScanning; // void _showBalanceDescription(BuildContext context) { // showPopUp( @@ -505,37 +492,6 @@ class BalanceRowWidget extends StatelessWidget { ), ], ), - if (hasSilentPayments) ...[ - Padding( - padding: const EdgeInsets.only(right: 8, top: 8), - child: Divider( - color: Theme.of(context).extension()!.labelTextColor, - thickness: 1, - ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - AutoSizeText( - S.of(context).silent_payments_scanning, - style: TextStyle( - fontSize: 14, - fontFamily: 'Lato', - fontWeight: FontWeight.w400, - color: Theme.of(context).extension()!.assetTitleColor, - height: 1, - ), - maxLines: 1, - textAlign: TextAlign.center, - ), - Padding( - padding: const EdgeInsets.only(right: 8), - child: StandardSwitch( - value: silentPaymentsScanningActive, onTaped: setSilentPaymentsScanning), - ) - ], - ), - ] ], ), ), diff --git a/lib/src/screens/dashboard/pages/cake_features_page.dart b/lib/src/screens/dashboard/pages/cake_features_page.dart new file mode 100644 index 000000000..aa587a5f4 --- /dev/null +++ b/lib/src/screens/dashboard/pages/cake_features_page.dart @@ -0,0 +1,204 @@ +import 'package:cake_wallet/bitcoin/bitcoin.dart'; +import 'package:cake_wallet/routes.dart'; +import 'package:flutter_mobx/flutter_mobx.dart'; +import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; +import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; +import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart'; +import 'package:cake_wallet/src/widgets/standard_switch.dart'; +import 'package:cake_wallet/themes/extensions/balance_page_theme.dart'; +import 'package:cake_wallet/utils/show_pop_up.dart'; +import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; +import 'package:cake_wallet/view_model/dashboard/cake_features_view_model.dart'; +import 'package:cw_core/wallet_type.dart'; +import 'package:flutter/material.dart'; +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class CakeFeaturesPage extends StatelessWidget { + CakeFeaturesPage({ + required this.dashboardViewModel, + required this.cakeFeaturesViewModel, + }); + + final DashboardViewModel dashboardViewModel; + final CakeFeaturesViewModel cakeFeaturesViewModel; + final _scrollController = ScrollController(); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10.0), + child: RawScrollbar( + thumbColor: Colors.white.withOpacity(0.15), + radius: Radius.circular(20), + thumbVisibility: true, + thickness: 2, + controller: _scrollController, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 50), + Text( + 'Cake ${S.of(context).features}', + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.w500, + color: Theme.of(context).extension()!.pageTitleTextColor, + ), + ), + Expanded( + child: ListView( + controller: _scrollController, + children: [ + // SizedBox(height: 20), + // DashBoardRoundedCardWidget( + // onTap: () => launchUrl( + // Uri.parse("https://cakelabs.com/news/cake-pay-mobile-to-shut-down/"), + // mode: LaunchMode.externalApplication, + // ), + // title: S.of(context).cake_pay_title, + // subTitle: S.of(context).cake_pay_subtitle, + // ), + SizedBox(height: 20), + DashBoardRoundedCardWidget( + onTap: () => launchUrl( + Uri.https("buy.cakepay.com"), + mode: LaunchMode.externalApplication, + ), + title: S.of(context).cake_pay_web_cards_title, + subTitle: S.of(context).cake_pay_web_cards_subtitle, + svgPicture: SvgPicture.asset( + 'assets/images/cards.svg', + height: 125, + width: 125, + fit: BoxFit.cover, + ), + ), + if (dashboardViewModel.hasSilentPayments) ...[ + SizedBox(height: 10), + DashBoardRoundedCardWidget( + title: S.of(context).silent_payments, + subTitle: S.of(context).enable_silent_payments_scanning, + hint: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () => launchUrl( + // TODO: Update URL + Uri.https("guides.cakewallet.com"), + mode: LaunchMode.externalApplication, + ), + child: Row( + children: [ + Text( + S.of(context).what_is_silent_payments, + style: TextStyle( + fontSize: 12, + fontFamily: 'Lato', + fontWeight: FontWeight.w400, + color: Theme.of(context) + .extension()! + .labelTextColor, + height: 1, + ), + softWrap: true, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Icon(Icons.help_outline, + size: 16, + color: Theme.of(context) + .extension()! + .labelTextColor), + ) + ], + ), + ), + Observer( + builder: (_) => StandardSwitch( + value: dashboardViewModel.silentPaymentsScanningActive, + onTaped: () => _toggleSilentPaymentsScanning(context), + ), + ) + ], + ), + ], + ), + onTap: () => _toggleSilentPaymentsScanning(context), + icon: Icon( + Icons.lock, + color: + Theme.of(context).extension()!.pageTitleTextColor, + size: 50, + ), + ), + ] + ], + ), + ), + ], + ), + ), + ), + ); + } + + // TODO: Remove ionia flow/files if we will discard it + void _navigatorToGiftCardsPage(BuildContext context) { + final walletType = dashboardViewModel.type; + + switch (walletType) { + case WalletType.haven: + showPopUp( + context: context, + builder: (BuildContext context) { + return AlertWithOneAction( + alertTitle: S.of(context).error, + alertContent: S.of(context).gift_cards_unavailable, + buttonText: S.of(context).ok, + buttonAction: () => Navigator.of(context).pop()); + }); + break; + default: + cakeFeaturesViewModel.isIoniaUserAuthenticated().then((value) { + if (value) { + Navigator.pushNamed(context, Routes.ioniaManageCardsPage); + return; + } + Navigator.of(context).pushNamed(Routes.ioniaWelcomePage); + }); + } + } + + Future _toggleSilentPaymentsScanning(BuildContext context) async { + final isSilentPaymentsScanningActive = dashboardViewModel.silentPaymentsScanningActive; + final newValue = !isSilentPaymentsScanningActive; + + final needsToSwitch = bitcoin!.getNodeIsCakeElectrs(dashboardViewModel.wallet) == false; + + if (needsToSwitch) { + return showPopUp( + context: context, + builder: (BuildContext context) => AlertWithTwoActions( + alertTitle: S.of(context).change_current_node_title, + alertContent: S.of(context).confirm_silent_payments_switch_node, + rightButtonText: S.of(context).ok, + leftButtonText: S.of(context).cancel, + actionRightButton: () { + dashboardViewModel.setSilentPaymentsScanning(newValue); + Navigator.of(context).pop(); + }, + actionLeftButton: () => Navigator.of(context).pop(), + )); + } + + return dashboardViewModel.setSilentPaymentsScanning(newValue); + } +} diff --git a/lib/src/screens/dashboard/pages/market_place_page.dart b/lib/src/screens/dashboard/pages/market_place_page.dart deleted file mode 100644 index 1bdcb61b4..000000000 --- a/lib/src/screens/dashboard/pages/market_place_page.dart +++ /dev/null @@ -1,105 +0,0 @@ -import 'package:cake_wallet/routes.dart'; -import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; -import 'package:cake_wallet/src/widgets/dashboard_card_widget.dart'; -import 'package:cake_wallet/utils/show_pop_up.dart'; -import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; -import 'package:cake_wallet/view_model/dashboard/market_place_view_model.dart'; -import 'package:cw_core/wallet_type.dart'; -import 'package:flutter/material.dart'; -import 'package:cake_wallet/generated/i18n.dart'; -import 'package:url_launcher/url_launcher.dart'; -import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; - -class MarketPlacePage extends StatelessWidget { - MarketPlacePage({ - required this.dashboardViewModel, - required this.marketPlaceViewModel, - }); - - final DashboardViewModel dashboardViewModel; - final MarketPlaceViewModel marketPlaceViewModel; - final _scrollController = ScrollController(); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: RawScrollbar( - thumbColor: Colors.white.withOpacity(0.15), - radius: Radius.circular(20), - thumbVisibility: true, - thickness: 2, - controller: _scrollController, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 50), - Text( - S.of(context).market_place, - style: TextStyle( - fontSize: 24, - fontWeight: FontWeight.w500, - color: Theme.of(context).extension()!.pageTitleTextColor, - ), - ), - Expanded( - child: ListView( - controller: _scrollController, - children: [ - // SizedBox(height: 20), - // DashBoardRoundedCardWidget( - // onTap: () => launchUrl( - // Uri.parse("https://cakelabs.com/news/cake-pay-mobile-to-shut-down/"), - // mode: LaunchMode.externalApplication, - // ), - // title: S.of(context).cake_pay_title, - // subTitle: S.of(context).cake_pay_subtitle, - // ), - SizedBox(height: 20), - DashBoardRoundedCardWidget( - onTap: () => launchUrl( - Uri.https("buy.cakepay.com"), - mode: LaunchMode.externalApplication, - ), - title: S.of(context).cake_pay_web_cards_title, - subTitle: S.of(context).cake_pay_web_cards_subtitle, - ), - ], - ), - ), - ], - ), - ), - ), - ); - } - - // TODO: Remove ionia flow/files if we will discard it - void _navigatorToGiftCardsPage(BuildContext context) { - final walletType = dashboardViewModel.type; - - switch (walletType) { - case WalletType.haven: - showPopUp( - context: context, - builder: (BuildContext context) { - return AlertWithOneAction( - alertTitle: S.of(context).error, - alertContent: S.of(context).gift_cards_unavailable, - buttonText: S.of(context).ok, - buttonAction: () => Navigator.of(context).pop()); - }); - break; - default: - marketPlaceViewModel.isIoniaUserAuthenticated().then((value) { - if (value) { - Navigator.pushNamed(context, Routes.ioniaManageCardsPage); - return; - } - Navigator.of(context).pushNamed(Routes.ioniaWelcomePage); - }); - } - } -} diff --git a/lib/src/screens/rescan/rescan_page.dart b/lib/src/screens/rescan/rescan_page.dart index da0f35137..b633a127e 100644 --- a/lib/src/screens/rescan/rescan_page.dart +++ b/lib/src/screens/rescan/rescan_page.dart @@ -1,3 +1,6 @@ +import 'package:cake_wallet/bitcoin/bitcoin.dart'; +import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; +import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:cake_wallet/view_model/rescan_view_model.dart'; @@ -35,6 +38,10 @@ class RescanPage extends BasePage { isLoading: _rescanViewModel.state == RescanWalletState.rescaning, text: S.of(context).rescan, onPressed: () async { + if (_rescanViewModel.isSilentPaymentsScan) { + return _toggleSilentPaymentsScanning(context); + } + await _rescanViewModel.rescanCurrentWallet( restoreHeight: _blockchainHeightWidgetKey.currentState!.height); Navigator.of(context).pop(); @@ -46,4 +53,29 @@ class RescanPage extends BasePage { ]), ); } + + Future _toggleSilentPaymentsScanning(BuildContext context) async { + final needsToSwitch = bitcoin!.getNodeIsCakeElectrs(_rescanViewModel.wallet) == false; + + if (needsToSwitch) { + return showPopUp( + context: context, + builder: (BuildContext context) => AlertWithTwoActions( + alertTitle: S.of(context).change_current_node_title, + alertContent: S.of(context).confirm_silent_payments_switch_node, + rightButtonText: S.of(context).ok, + leftButtonText: S.of(context).cancel, + actionRightButton: () async { + _rescanViewModel.rescanCurrentWallet( + restoreHeight: _blockchainHeightWidgetKey.currentState!.height); + Navigator.of(context).pop(); + }, + actionLeftButton: () => Navigator.of(context).pop(), + )); + } + + await _rescanViewModel.rescanCurrentWallet( + restoreHeight: _blockchainHeightWidgetKey.currentState!.height); + Navigator.of(context).pop(); + } } diff --git a/lib/src/widgets/dashboard_card_widget.dart b/lib/src/widgets/dashboard_card_widget.dart index b3f92123a..eb865b63b 100644 --- a/lib/src/widgets/dashboard_card_widget.dart +++ b/lib/src/widgets/dashboard_card_widget.dart @@ -2,19 +2,24 @@ import 'package:cake_wallet/themes/extensions/balance_page_theme.dart'; import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart'; import 'package:flutter/material.dart'; import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; +import 'package:flutter_svg/flutter_svg.dart'; class DashBoardRoundedCardWidget extends StatelessWidget { - - DashBoardRoundedCardWidget({ required this.onTap, required this.title, required this.subTitle, + this.hint, + this.svgPicture, + this.icon, }); final VoidCallback onTap; final String title; final String subTitle; + final Widget? hint; + final SvgPicture? svgPicture; + final Icon? icon; @override Widget build(BuildContext context) { @@ -35,32 +40,52 @@ class DashBoardRoundedCardWidget extends StatelessWidget { color: Theme.of(context).extension()!.cardBorderColor, ), ), - child: - Column( + child: Column( + children: [ + Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - title, - style: TextStyle( - color: Theme.of(context).extension()!.cardTextColor, - fontSize: 24, - fontWeight: FontWeight.w900, + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: TextStyle( + color: + Theme.of(context).extension()!.cardTextColor, + fontSize: 24, + fontWeight: FontWeight.w900, + ), + softWrap: true, + ), + SizedBox(height: 5), + Text( + subTitle, + style: TextStyle( + color: Theme.of(context) + .extension()! + .cardTextColor, + fontWeight: FontWeight.w500, + fontFamily: 'Lato'), + softWrap: true, + ), + ], ), ), - SizedBox(height: 5), - Text( - subTitle, - style: TextStyle( - color: Theme.of(context).extension()!.cardTextColor, - fontWeight: FontWeight.w500, - fontFamily: 'Lato'), - ) + if (svgPicture != null) svgPicture!, + if (icon != null) icon! ], ), + if (hint != null) ...[ + SizedBox(height: 10), + hint!, + ] + ], + ), ), ], ), ); } } - diff --git a/lib/view_model/dashboard/cake_features_view_model.dart b/lib/view_model/dashboard/cake_features_view_model.dart new file mode 100644 index 000000000..0a8fbc640 --- /dev/null +++ b/lib/view_model/dashboard/cake_features_view_model.dart @@ -0,0 +1,16 @@ +import 'package:cake_wallet/ionia/ionia_service.dart'; +import 'package:mobx/mobx.dart'; + +part 'cake_features_view_model.g.dart'; + +class CakeFeaturesViewModel = CakeFeaturesViewModelBase with _$CakeFeaturesViewModel; + +abstract class CakeFeaturesViewModelBase with Store { + final IoniaService _ioniaService; + + CakeFeaturesViewModelBase(this._ioniaService); + + Future isIoniaUserAuthenticated() async { + return await _ioniaService.isLogined(); + } +} diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index b4cd026fe..c90e51cd1 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -318,7 +318,7 @@ abstract class DashboardViewModelBase with Store { silentPaymentsScanningActive = active; if (hasSilentPayments) { - bitcoin!.setScanningActive(wallet, active); + bitcoin!.setScanningActive(wallet, settingsStore, active); } } diff --git a/lib/view_model/dashboard/market_place_view_model.dart b/lib/view_model/dashboard/market_place_view_model.dart deleted file mode 100644 index 470041127..000000000 --- a/lib/view_model/dashboard/market_place_view_model.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:cake_wallet/ionia/ionia_service.dart'; -import 'package:mobx/mobx.dart'; - -part 'market_place_view_model.g.dart'; - -class MarketPlaceViewModel = MarketPlaceViewModelBase with _$MarketPlaceViewModel; - -abstract class MarketPlaceViewModelBase with Store { - final IoniaService _ioniaService; - - MarketPlaceViewModelBase(this._ioniaService); - - - Future isIoniaUserAuthenticated() async { - return await _ioniaService.isLogined(); - } -} \ No newline at end of file diff --git a/lib/view_model/rescan_view_model.dart b/lib/view_model/rescan_view_model.dart index ae7baf008..4008ee9f1 100644 --- a/lib/view_model/rescan_view_model.dart +++ b/lib/view_model/rescan_view_model.dart @@ -1,4 +1,5 @@ import 'package:cake_wallet/bitcoin/bitcoin.dart'; +import 'package:cake_wallet/store/settings_store.dart'; import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_type.dart'; import 'package:mobx/mobx.dart'; @@ -10,12 +11,14 @@ class RescanViewModel = RescanViewModelBase with _$RescanViewModel; enum RescanWalletState { rescaning, none } abstract class RescanViewModelBase with Store { - RescanViewModelBase(this._wallet) + RescanViewModelBase(this.wallet, this.settingsStore) : state = RescanWalletState.none, isButtonEnabled = false, doSingleScan = false; - final WalletBase _wallet; + final WalletBase wallet; + + final SettingsStore settingsStore; @observable RescanWalletState state; @@ -27,16 +30,16 @@ abstract class RescanViewModelBase with Store { bool doSingleScan; @computed - bool get isSilentPaymentsScan => _wallet.type == WalletType.bitcoin; + bool get isSilentPaymentsScan => wallet.type == WalletType.bitcoin; @action Future rescanCurrentWallet({required int restoreHeight}) async { state = RescanWalletState.rescaning; - if (_wallet.type != WalletType.bitcoin) { - _wallet.rescan(height: restoreHeight); - _wallet.transactionHistory.clear(); + if (wallet.type != WalletType.bitcoin) { + wallet.rescan(height: restoreHeight); + wallet.transactionHistory.clear(); } else { - bitcoin!.rescan(_wallet, height: restoreHeight, doSingleScan: doSingleScan); + bitcoin!.rescan(wallet, settingsStore, height: restoreHeight, doSingleScan: doSingleScan); } state = RescanWalletState.none; } diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index 44df63a3a..03f91bf1c 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "تأكيد خصم الرسوم", "confirm_fee_deduction_content": "هل توافق على خصم الرسوم من الإخراج؟", "confirm_sending": "تأكيد الإرسال", + "confirm_silent_payments_switch_node": "حاليا مطلوب لتبديل العقد لمسح المدفوعات الصامتة", "confirmations": "التأكيدات", "confirmed": "رصيد مؤكد", "confirmed_tx": "مؤكد", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "نقوم بإنشاء عناوين جديدة في كل مرة تستخدم فيها عنوانًا ، لكن العناوين السابقة تستمر في العمل", "email_address": "عنوان البريد الالكترونى", "enable_replace_by_fee": "تمكين الاستبدال", + "enable_silent_payments_scanning": "تمكين المسح الضوئي للمدفوعات الصامتة", "enabled": "ممكنة", "enter_amount": "أدخل المبلغ", "enter_backup_password": "أدخل كلمة المرور الاحتياطية هنا", @@ -275,6 +277,7 @@ "extracted_address_content": "سوف ترسل الأموال إلى\n${recipient_name}", "failed_authentication": "${state_error} فشل المصادقة.", "faq": "الأسئلة الشائعة", + "features": "سمات", "fetching": "جار الجلب", "fiat_api": "Fiat API", "fiat_balance": "الرصيد فيات", @@ -793,6 +796,7 @@ "warning": "تحذير", "welcome": "مرحبا بك في", "welcome_to_cakepay": "مرحبا بكم في Cake Pay!", + "what_is_silent_payments": "ما هي المدفوعات الصامتة؟", "widgets_address": "عنوان", "widgets_or": "أو", "widgets_restore_from_blockheight": "استعادة من ارتفاع البلوك", diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index 185e22e0b..412596995 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Потвърдете приспадането на таксите", "confirm_fee_deduction_content": "Съгласни ли сте да приспадате таксата от продукцията?", "confirm_sending": "Потвърждаване на изпращането", + "confirm_silent_payments_switch_node": "Понастоящем се изисква да превключвате възлите за сканиране на мълчаливи плащания", "confirmations": "потвърждения", "confirmed": "Потвърден баланс", "confirmed_tx": "Потвърдено", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Нови адреси се генерират всеки път, когато използвате този, но и предишните продължават да работят", "email_address": "Имейл адрес", "enable_replace_by_fee": "Активиране на замяна по забрана", + "enable_silent_payments_scanning": "Активирайте безшумните плащания за сканиране", "enabled": "Активирано", "enter_amount": "Въведете сума", "enter_backup_password": "Въведете парола за възстановяване", @@ -275,6 +277,7 @@ "extracted_address_content": "Ще изпратите средства на \n${recipient_name}", "failed_authentication": "Неуспешно удостоверяване. ${state_error}", "faq": "FAQ", + "features": "Характеристика", "fetching": "Обработване", "fiat_api": "Fiat API", "fiat_balance": "Фиат Баланс", @@ -793,6 +796,7 @@ "warning": "Внимание", "welcome": "Добре дошли в", "welcome_to_cakepay": "Добре дошли в Cake Pay!", + "what_is_silent_payments": "Какво са мълчаливи плащания?", "widgets_address": "Адрес", "widgets_or": "или", "widgets_restore_from_blockheight": "Възстановяване от blockheight", diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index 2146ae725..c063691f1 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Potvrďte odpočet poplatků", "confirm_fee_deduction_content": "Souhlasíte s odečtením poplatku z výstupu?", "confirm_sending": "Potvrdit odeslání", + "confirm_silent_payments_switch_node": "V současné době je nutné přepínat uzly pro skenování tichých plateb", "confirmations": "Potvrzení", "confirmed": "Potvrzený zůstatek", "confirmed_tx": "Potvrzeno", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Po každém použití je generována nová adresa, ale předchozí adresy také stále fungují", "email_address": "E-mailová adresa", "enable_replace_by_fee": "Povolit výměnu podle poplatku", + "enable_silent_payments_scanning": "Povolte skenování tichých plateb", "enabled": "Povoleno", "enter_amount": "Zadejte částku", "enter_backup_password": "Zde zadejte své heslo pro zálohy", @@ -275,6 +277,7 @@ "extracted_address_content": "Prostředky budete posílat na\n${recipient_name}", "failed_authentication": "Ověřování selhalo. ${state_error}", "faq": "FAQ", + "features": "Funkce", "fetching": "Načítá se", "fiat_api": "Fiat API", "fiat_balance": "Fiat Balance", @@ -793,6 +796,7 @@ "warning": "Varování", "welcome": "Vítejte v", "welcome_to_cakepay": "Vítejte v Cake Pay!", + "what_is_silent_payments": "Co jsou tiché platby?", "widgets_address": "Adresa", "widgets_or": "nebo", "widgets_restore_from_blockheight": "Obnovit z výšky bloku", diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index f4b6cd0df..4f29258d1 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Gebührenabzug bestätigen", "confirm_fee_deduction_content": "Stimmen Sie zu, die Gebühr von der Ausgabe abzuziehen?", "confirm_sending": "Senden bestätigen", + "confirm_silent_payments_switch_node": "Derzeit ist es erforderlich, Knoten zu wechseln, um stille Zahlungen zu scannen", "confirmations": "Bestätigungen", "confirmed": "Bestätigter Saldo", "confirmed_tx": "Bestätigt", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Wir generieren jedes Mal neue Adressen, wenn Sie eine verwenden, aber vorherige Adressen funktionieren weiterhin", "email_address": "E-Mail-Adresse", "enable_replace_by_fee": "Aktivieren Sie Ersatz für Fee", + "enable_silent_payments_scanning": "Aktivieren Sie stille Zahlungen Scannen", "enabled": "Ermöglicht", "enter_amount": "Betrag eingeben", "enter_backup_password": "Sicherungskennwort hier eingeben", @@ -275,6 +277,7 @@ "extracted_address_content": "Sie senden Geld an\n${recipient_name}", "failed_authentication": "Authentifizierung fehlgeschlagen. ${state_error}", "faq": "Häufig gestellte Fragen", + "features": "Merkmale", "fetching": "Frage ab", "fiat_api": "Fiat API", "fiat_balance": "Fiat Balance", @@ -796,6 +799,7 @@ "warning": "Warnung", "welcome": "Willkommen bei", "welcome_to_cakepay": "Willkommen bei Cake Pay!", + "what_is_silent_payments": "Was sind stille Zahlungen?", "widgets_address": "Adresse", "widgets_or": "oder", "widgets_restore_from_blockheight": "Ab Blockhöhe wiederherstellen", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 73b2bde1c..677e3e50f 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Confirm Fee Deduction", "confirm_fee_deduction_content": "Do you agree to deduct the fee from the output?", "confirm_sending": "Confirm sending", + "confirm_silent_payments_switch_node": "Currently it is required to switch nodes to scan silent payments", "confirmations": "Confirmations", "confirmed": "Confirmed Balance", "confirmed_tx": "Confirmed", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "We generate new addresses each time you use one, but previous addresses continue to work", "email_address": "Email Address", "enable_replace_by_fee": "Enable Replace-By-Fee", + "enable_silent_payments_scanning": "Enable silent payments scanning", "enabled": "Enabled", "enter_amount": "Enter Amount", "enter_backup_password": "Enter backup password here", @@ -275,6 +277,7 @@ "extracted_address_content": "You will be sending funds to\n${recipient_name}", "failed_authentication": "Failed authentication. ${state_error}", "faq": "FAQ", + "features": "Features", "fetching": "Fetching", "fiat_api": "Fiat API", "fiat_balance": "Fiat Balance", @@ -793,6 +796,7 @@ "warning": "Warning", "welcome": "Welcome to", "welcome_to_cakepay": "Welcome to Cake Pay!", + "what_is_silent_payments": "What is silent payments?", "widgets_address": "Address", "widgets_or": "or", "widgets_restore_from_blockheight": "Restore from blockheight", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 03c477568..3c47d2c40 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Confirmar la deducción de la tarifa", "confirm_fee_deduction_content": "¿Acepta deducir la tarifa de la producción?", "confirm_sending": "Confirmar envío", + "confirm_silent_payments_switch_node": "Actualmente se requiere cambiar los nodos para escanear pagos silenciosos", "confirmations": "Confirmaciones", "confirmed": "Saldo confirmado", "confirmed_tx": "Confirmado", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Generamos nuevas direcciones cada vez que usa una, pero las direcciones anteriores siguen funcionando", "email_address": "Dirección de correo electrónico", "enable_replace_by_fee": "Habilitar reemplazar por tarea", + "enable_silent_payments_scanning": "Habilitar escaneo de pagos silenciosos", "enabled": "Activado", "enter_amount": "Ingrese la cantidad", "enter_backup_password": "Ingrese la contraseña de respaldo aquí", @@ -275,6 +277,7 @@ "extracted_address_content": "Enviará fondos a\n${recipient_name}", "failed_authentication": "Autenticación fallida. ${state_error}", "faq": "FAQ", + "features": "Características", "fetching": "Cargando", "fiat_api": "Fiat API", "fiat_balance": "Equilibrio Fiat", @@ -794,6 +797,7 @@ "warning": "Advertencia", "welcome": "Bienvenido", "welcome_to_cakepay": "¡Bienvenido a Cake Pay!", + "what_is_silent_payments": "¿Qué son los pagos silenciosos?", "widgets_address": "Dirección", "widgets_or": "o", "widgets_restore_from_blockheight": "Restaurar desde blockheight", diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index 583fdd489..594ca09ab 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Confirmer la déduction des frais", "confirm_fee_deduction_content": "Acceptez-vous de déduire les frais de la production?", "confirm_sending": "Confirmer l'envoi", + "confirm_silent_payments_switch_node": "Actuellement, il est nécessaire de changer de nœuds pour scanner les paiements silencieux", "confirmations": "Confirmations", "confirmed": "Solde confirmé", "confirmed_tx": "Confirmé", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Nous générons de nouvelles adresses à chaque fois que vous en utilisez une, mais les adresses précédentes continuent à fonctionner", "email_address": "Adresse e-mail", "enable_replace_by_fee": "Activer Remplace-by-Fee", + "enable_silent_payments_scanning": "Activer la numérisation des paiements silencieux", "enabled": "Activé", "enter_amount": "Entrez le montant", "enter_backup_password": "Entrez le mot de passe de sauvegarde ici", @@ -275,6 +277,7 @@ "extracted_address_content": "Vous allez envoyer des fonds à\n${recipient_name}", "failed_authentication": "Échec d'authentification. ${state_error}", "faq": "FAQ", + "features": "Caractéristiques", "fetching": "Récupération", "fiat_api": "Fiat API", "fiat_balance": "Solde fiat", @@ -793,6 +796,7 @@ "warning": "Avertissement", "welcome": "Bienvenue sur", "welcome_to_cakepay": "Bienvenue sur Cake Pay !", + "what_is_silent_payments": "Qu'est-ce que les paiements silencieux?", "widgets_address": "Adresse", "widgets_or": "ou", "widgets_restore_from_blockheight": "Restaurer depuis une hauteur de bloc", diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 4c153ee02..3ada6e528 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Tabbatar da cire kudade", "confirm_fee_deduction_content": "Shin kun yarda ku cire kuɗin daga fitarwa?", "confirm_sending": "Tabbatar da aikawa", + "confirm_silent_payments_switch_node": "A halin yanzu ana buƙatar sauya nodes don bincika biyan siliki", "confirmations": "Tabbatar", "confirmed": "An tabbatar", "confirmed_tx": "Tabbatar", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Muna samar da sababbin adireshi duk lokacin da kuka yi amfani da ɗaya, amma adiresoshin da suka gabata suna ci gaba da aiki", "email_address": "Adireshin i-mel", "enable_replace_by_fee": "Ba da damar maye gurbin-by-kudin", + "enable_silent_payments_scanning": "Kunna biya biya", "enabled": "An kunna", "enter_amount": "Shigar da Adadi", "enter_backup_password": "Shigar da kalmar wucewa ta madadin nan", @@ -275,6 +277,7 @@ "extracted_address_content": "Za ku aika da kudade zuwa\n${recipient_name}", "failed_authentication": "Binne wajen shiga. ${state_error}", "faq": "FAQ", + "features": "Fasas", "fetching": "Daukewa", "fiat_api": "API ɗin Fiat", "fiat_balance": "Fiat Balance", @@ -795,6 +798,7 @@ "warning": "Gargadi", "welcome": "Barka da zuwa", "welcome_to_cakepay": "Barka da zuwa Cake Pay!", + "what_is_silent_payments": "Menene biyan shiru?", "widgets_address": "Adireshin", "widgets_or": "ko", "widgets_restore_from_blockheight": "Sake dawo da daga blockheight", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index bbf974915..979aaeb25 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "शुल्क कटौती की पुष्टि करें", "confirm_fee_deduction_content": "क्या आप आउटपुट से शुल्क में कटौती करने के लिए सहमत हैं?", "confirm_sending": "भेजने की पुष्टि करें", + "confirm_silent_payments_switch_node": "वर्तमान में मूक भुगतान को स्कैन करने के लिए नोड्स को स्विच करना आवश्यक है", "confirmations": "पुष्टिकरण", "confirmed": "पुष्टि की गई शेष राशिी", "confirmed_tx": "की पुष्टि", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "हर बार जब आप एक का उपयोग करते हैं तो हम नए पते उत्पन्न करते हैं, लेकिन पिछले पते काम करना जारी रखते हैं", "email_address": "ईमेल पता", "enable_replace_by_fee": "प्रतिस्थापित-दर-शुल्क सक्षम करें", + "enable_silent_payments_scanning": "मूक भुगतान स्कैनिंग सक्षम करें", "enabled": "सक्रिय", "enter_amount": "राशि दर्ज करें", "enter_backup_password": "यहां बैकअप पासवर्ड डालें", @@ -275,6 +277,7 @@ "extracted_address_content": "आपको धनराशि भेजी जाएगी\n${recipient_name}", "failed_authentication": "प्रमाणीकरण विफल. ${state_error}", "faq": "FAQ", + "features": "विशेषताएँ", "fetching": "ला रहा है", "fiat_api": "फिएट पैसे API", "fiat_balance": "फिएट बैलेंस", @@ -795,6 +798,7 @@ "warning": "चेतावनी", "welcome": "स्वागत हे सेवा मेरे", "welcome_to_cakepay": "केकपे में आपका स्वागत है!", + "what_is_silent_payments": "मूक भुगतान क्या है?", "widgets_address": "पता", "widgets_or": "या", "widgets_restore_from_blockheight": "ब्लॉकचेन से पुनर्स्थापित करें", diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 04ac5acd4..5eca97a90 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Potvrdite odbitak naknade", "confirm_fee_deduction_content": "Slažete li se da ćete odbiti naknadu od izlaza?", "confirm_sending": "Potvrdi slanje", + "confirm_silent_payments_switch_node": "Trenutno je potrebno prebaciti čvorove na skeniranje tihih plaćanja", "confirmations": "Potvrde", "confirmed": "Potvrđeno stanje", "confirmed_tx": "Potvrđen", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Minden egyes alkalommal új címeket generálunk, de a korábbi címek továbbra is működnek", "email_address": "Adresa e-pošte", "enable_replace_by_fee": "Omogući zamjenu", + "enable_silent_payments_scanning": "Omogući skeniranje tihih plaćanja", "enabled": "Omogućeno", "enter_amount": "Unesite iznos", "enter_backup_password": "Unesite svoju lozinku za sigurnosnu kopiju ovdje", @@ -275,6 +277,7 @@ "extracted_address_content": "Poslat ćete sredstva primatelju\n${recipient_name}", "failed_authentication": "Autentifikacija neuspješna. ${state_error}", "faq": "FAQ", + "features": "Značajke", "fetching": "Dohvaćanje", "fiat_api": "Fiat API", "fiat_balance": "Fiat Bilans", @@ -793,6 +796,7 @@ "warning": "Upozorenje", "welcome": "Dobrodošli na", "welcome_to_cakepay": "Dobro došli u Cake Pay!", + "what_is_silent_payments": "Što je tiha plaćanja?", "widgets_address": "Adresa", "widgets_or": "ili", "widgets_restore_from_blockheight": "Oporavi pomoću visine bloka", diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index f45a66b5b..ca823c3d5 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Konfirmasi pengurangan biaya", "confirm_fee_deduction_content": "Apakah Anda setuju untuk mengurangi biaya dari output?", "confirm_sending": "Konfirmasi pengiriman", + "confirm_silent_payments_switch_node": "Saat ini diminta untuk mengganti node untuk memindai pembayaran diam", "confirmations": "Konfirmasi", "confirmed": "Saldo Terkonfirmasi", "confirmed_tx": "Dikonfirmasi", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Kami menghasilkan alamat baru setiap kali Anda menggunakan satu, tetapi alamat sebelumnya tetap berfungsi", "email_address": "Alamat Email", "enable_replace_by_fee": "Aktifkan ganti-by-fee", + "enable_silent_payments_scanning": "Aktifkan pemindaian pembayaran diam", "enabled": "Diaktifkan", "enter_amount": "Masukkan Jumlah", "enter_backup_password": "Masukkan kata sandi cadangan di sini", @@ -275,6 +277,7 @@ "extracted_address_content": "Anda akan mengirim dana ke\n${recipient_name}", "failed_authentication": "Otentikasi gagal. ${state_error}", "faq": "Pertanyaan yang Sering Diajukan", + "features": "Fitur", "fetching": "Mengambil", "fiat_api": "API fiat", "fiat_balance": "Saldo Fiat", @@ -796,6 +799,7 @@ "warning": "Peringatan", "welcome": "Selamat datang di", "welcome_to_cakepay": "Selamat Datang di Cake Pay!", + "what_is_silent_payments": "Apa itu pembayaran diam?", "widgets_address": "Alamat", "widgets_or": "atau", "widgets_restore_from_blockheight": "Pulihkan dari tinggi blok", diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index 133ef62d5..3b306b5ee 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Conferma la detrazione delle commissioni", "confirm_fee_deduction_content": "Accetti di detrarre la commissione dall'output?", "confirm_sending": "Conferma l'invio", + "confirm_silent_payments_switch_node": "Attualmente è necessario cambiare nodi per scansionare i pagamenti silenziosi", "confirmations": "Conferme", "confirmed": "Saldo confermato", "confirmed_tx": "Confermato", @@ -219,6 +220,7 @@ "electrum_address_disclaimer": "Generiamo nuovi indirizzi ogni volta che ne utilizzi uno, ma gli indirizzi precedenti continuano a funzionare", "email_address": "Indirizzo e-mail", "enable_replace_by_fee": "Abilita sostituzione per fee", + "enable_silent_payments_scanning": "Abilita la scansione dei pagamenti silenziosi", "enabled": "Abilitato", "enter_amount": "Inserisci importo", "enter_backup_password": "Inserisci la password di backup qui", @@ -276,6 +278,7 @@ "extracted_address_content": "Invierai i tuoi fondi a\n${recipient_name}", "failed_authentication": "Autenticazione fallita. ${state_error}", "faq": "Domande Frequenti", + "features": "Caratteristiche", "fetching": "Recupero", "fiat_api": "Fiat API", "fiat_balance": "Equilibrio fiat", @@ -796,6 +799,7 @@ "warning": "Avvertimento", "welcome": "Benvenuto", "welcome_to_cakepay": "Benvenuto in Cake Pay!", + "what_is_silent_payments": "Che cos'è i pagamenti silenziosi?", "widgets_address": "Indirizzo", "widgets_or": "o", "widgets_restore_from_blockheight": "Recupera da altezza blocco", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index a6191460b..d1e70cb5a 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "料金控除を確認します", "confirm_fee_deduction_content": "出力から料金を差し引くことに同意しますか?", "confirm_sending": "送信を確認", + "confirm_silent_payments_switch_node": "現在、ノードを切り替えてサイレント決済をスキャンする必要があります", "confirmations": "確認", "confirmed": "確認済み残高", "confirmed_tx": "確認済み", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "使用するたびに新しいアドレスが生成されますが、以前のアドレスは引き続き機能します", "email_address": "メールアドレス", "enable_replace_by_fee": "交換ごとに有効にします", + "enable_silent_payments_scanning": "サイレントペイメントスキャンを有効にします", "enabled": "有効", "enter_amount": "金額を入力", "enter_backup_password": "ここにバックアップパスワードを入力してください", @@ -275,6 +277,7 @@ "extracted_address_content": "に送金します\n${recipient_name}", "failed_authentication": "認証失敗. ${state_error}", "faq": "FAQ", + "features": "特徴", "fetching": "フェッチング", "fiat_api": "不換紙幣 API", "fiat_balance": "フィアットバランス", @@ -794,6 +797,7 @@ "warning": "警告", "welcome": "ようこそ に", "welcome_to_cakepay": "Cake Payへようこそ!", + "what_is_silent_payments": "サイレント支払いとは何ですか?", "widgets_address": "住所", "widgets_or": "または", "widgets_restore_from_blockheight": "ブロックの高さから復元", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 9cd30a13f..ccc164aa0 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "수수료 공제를 확인하십시오", "confirm_fee_deduction_content": "출력에서 수수료를 공제하는 데 동의하십니까?", "confirm_sending": "전송 확인", + "confirm_silent_payments_switch_node": "현재 사일런트 결제를 스캔하려면 노드를 전환해야합니다.", "confirmations": "확인", "confirmed": "확인된 잔액", "confirmed_tx": "확인", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "사용할 때마다 새 주소가 생성되지만 이전 주소는 계속 작동합니다.", "email_address": "이메일 주소", "enable_replace_by_fee": "대체별로 활성화하십시오", + "enable_silent_payments_scanning": "무음 지불 스캔을 활성화합니다", "enabled": "사용", "enter_amount": "금액 입력", "enter_backup_password": "여기에 백업 비밀번호를 입력하세요.", @@ -275,6 +277,7 @@ "extracted_address_content": "당신은에 자금을 보낼 것입니다\n${recipient_name}", "failed_authentication": "인증 실패. ${state_error}", "faq": "FAQ", + "features": "특징", "fetching": "가져 오는 중", "fiat_api": "명목 화폐 API", "fiat_balance": "피아트 잔액", @@ -794,6 +797,7 @@ "warning": "경고", "welcome": "환영 에", "welcome_to_cakepay": "Cake Pay에 오신 것을 환영합니다!", + "what_is_silent_payments": "조용한 지불이란 무엇입니까?", "widgets_address": "주소", "widgets_or": "또는", "widgets_restore_from_blockheight": "블록 높이에서 복원", diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index ee1fc90c7..8ffeb01d0 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "အခကြေးငွေကိုနှုတ်ယူခြင်း", "confirm_fee_deduction_content": "output မှအခကြေးငွေကိုယူရန်သဘောတူပါသလား။", "confirm_sending": "ပေးပို့အတည်ပြုပါ။", + "confirm_silent_payments_switch_node": "လောလောဆယ်အသံတိတ်ငွေပေးချေမှုကိုစကင်ဖတ်စစ်ဆေးရန် node များကိုပြောင်းရန်လိုအပ်သည်", "confirmations": "အတည်ပြုချက်များ", "confirmed": "အတည်ပြုထားသော လက်ကျန်ငွေ", "confirmed_tx": "အတည်ပြုသည်", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "သင်အသုံးပြုသည့်အချိန်တိုင်းတွင် ကျွန်ုပ်တို့သည် လိပ်စာအသစ်များကို ထုတ်ပေးသော်လည်း ယခင်လိပ်စာများသည် ဆက်လက်အလုပ်လုပ်နေပါသည်။", "email_address": "အီးမေးလ်လိပ်စာ", "enable_replace_by_fee": "အစားထိုး - by- အခကြေးငွေ enable", + "enable_silent_payments_scanning": "အသံတိတ်ငွေပေးချေမှုကို scanable လုပ်ပါ", "enabled": "ဖွင့်ထားသည်။", "enter_amount": "ပမာဏကို ထည့်ပါ။", "enter_backup_password": "အရန်စကားဝှက်ကို ဤနေရာတွင် ထည့်ပါ။", @@ -275,6 +277,7 @@ "extracted_address_content": "သင်သည် \n${recipient_name} သို့ ရန်ပုံငွေများ ပေးပို့ပါမည်", "failed_authentication": "အထောက်အထားစိစစ်ခြင်း မအောင်မြင်ပါ။. ${state_error}", "faq": "အမြဲမေးလေ့ရှိသောမေးခွန်းများ", + "features": "အင်္ဂါရပ်များ", "fetching": "ခေါ်ယူခြင်း။", "fiat_api": "Fiat API", "fiat_balance": "Fiat Balance", @@ -793,6 +796,7 @@ "warning": "သတိပေးချက်", "welcome": "မှကြိုဆိုပါတယ်။", "welcome_to_cakepay": "Cake Pay မှကြိုဆိုပါသည်။", + "what_is_silent_payments": "အသံတိတ်ငွေပေးချေမှုဆိုတာဘာလဲ", "widgets_address": "လိပ်စာ", "widgets_or": "သို့မဟုတ်", "widgets_restore_from_blockheight": "အမြင့်မှ ပြန်လည်ရယူပါ။", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index ae7a32dbb..79ad955c2 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Bevestig de aftrek van de kosten", "confirm_fee_deduction_content": "Stemt u ermee in om de vergoeding af te trekken van de output?", "confirm_sending": "Bevestig verzending", + "confirm_silent_payments_switch_node": "Momenteel is het vereist om knooppunten te schakelen om stille betalingen te scannen", "confirmations": "Bevestigingen", "confirmed": "Bevestigd saldo", "confirmed_tx": "Bevestigd", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "We genereren nieuwe adressen elke keer dat u er een gebruikt, maar eerdere adressen blijven werken", "email_address": "E-mailadres", "enable_replace_by_fee": "Schakel vervangen door een fee", + "enable_silent_payments_scanning": "Schakel stille betalingen in scannen in", "enabled": "Ingeschakeld", "enter_amount": "Voer Bedrag in", "enter_backup_password": "Voer hier een back-upwachtwoord in", @@ -275,6 +277,7 @@ "extracted_address_content": "U stuurt geld naar\n${recipient_name}", "failed_authentication": "Mislukte authenticatie. ${state_error}", "faq": "FAQ", + "features": "Functies", "fetching": "Ophalen", "fiat_api": "Fiat API", "fiat_balance": "Fiat Balans", @@ -794,6 +797,7 @@ "warning": "Waarschuwing", "welcome": "Welkom bij", "welcome_to_cakepay": "Welkom bij Cake Pay!", + "what_is_silent_payments": "Wat zijn stille betalingen?", "widgets_address": "Adres", "widgets_or": "of", "widgets_restore_from_blockheight": "Herstel vanaf blockheight", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 7e7cdfb75..0e21faf6d 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Potwierdź odliczenie opłaty", "confirm_fee_deduction_content": "Czy zgadzasz się odliczyć opłatę od wyników?", "confirm_sending": "Potwierdź wysłanie", + "confirm_silent_payments_switch_node": "Obecnie wymagane jest zmiana węzłów w celu skanowania cichych płatności", "confirmations": "Potwierdzenia", "confirmed": "Potwierdzone saldo", "confirmed_tx": "Potwierdzony", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Za każdym razem, gdy wykorzystasz adres, dla wiekszej prywatności generujemy nowy, ale poprzednie adresy nadal działają, i moga odbierać środki", "email_address": "Adres e-mail", "enable_replace_by_fee": "Włącz wymianę po lewej", + "enable_silent_payments_scanning": "Włącz skanowanie cichych płatności", "enabled": "Włączone", "enter_amount": "Wprowadź kwotę", "enter_backup_password": "Wprowadź tutaj hasło kopii zapasowej", @@ -275,6 +277,7 @@ "extracted_address_content": "Wysyłasz środki na\n${recipient_name}", "failed_authentication": "Nieudane uwierzytelnienie. ${state_error}", "faq": "FAQ", + "features": "Cechy", "fetching": "Pobieranie", "fiat_api": "API Walut FIAT", "fiat_balance": "Bilans Fiata", @@ -793,6 +796,7 @@ "warning": "Ostrzeżenie", "welcome": "Witamy w", "welcome_to_cakepay": "Witamy w Cake Pay!", + "what_is_silent_payments": "Co to są ciche płatności?", "widgets_address": "Adres", "widgets_or": "lub", "widgets_restore_from_blockheight": "Przywróć z wysokości bloku", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 1526b6aad..bef5bbf83 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Confirme dedução da taxa", "confirm_fee_deduction_content": "Você concorda em deduzir a taxa da saída?", "confirm_sending": "Confirmar o envio", + "confirm_silent_payments_switch_node": "Atualmente, é necessário trocar de nós para digitalizar pagamentos silenciosos", "confirmations": "Confirmações", "confirmed": "Saldo Confirmado", "confirmed_tx": "Confirmado", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Geramos novos endereços cada vez que você usa um, mas os endereços anteriores continuam funcionando", "email_address": "Endereço de e-mail", "enable_replace_by_fee": "Habilite substituir por taxa", + "enable_silent_payments_scanning": "Ativar escaneamento de pagamentos silenciosos", "enabled": "Habilitado", "enter_amount": "Digite o valor", "enter_backup_password": "Digite a senha de backup aqui", @@ -275,6 +277,7 @@ "extracted_address_content": "Você enviará fundos para\n${recipient_name}", "failed_authentication": "Falha na autenticação. ${state_error}", "faq": "FAQ", + "features": "Funcionalidades", "fetching": "Buscando", "fiat_api": "API da Fiat", "fiat_balance": "Equilíbrio Fiat", @@ -796,6 +799,7 @@ "warning": "Aviso", "welcome": "Bem-vindo ao", "welcome_to_cakepay": "Bem-vindo ao Cake Pay!", + "what_is_silent_payments": "O que são pagamentos silenciosos?", "widgets_address": "Endereço", "widgets_or": "ou", "widgets_restore_from_blockheight": "Restaurar a partir de altura do bloco", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 0534f52d7..d4c049f59 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Подтвердите вычет платы", "confirm_fee_deduction_content": "Согласны ли вы вычесть плату из вывода?", "confirm_sending": "Подтвердить отправку", + "confirm_silent_payments_switch_node": "В настоящее время требуется переключение узлов для сканирования молчаливых платежей", "confirmations": "Подтверждения", "confirmed": "Подтвержденный баланс", "confirmed_tx": "Подтвержденный", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Мы генерируем новые адреса каждый раз, когда вы их используете, но предыдущие адреса продолжают работать.", "email_address": "Адрес электронной почты", "enable_replace_by_fee": "Включить замену за пикой", + "enable_silent_payments_scanning": "Включить сканирование безмолвных платежей", "enabled": "Включено", "enter_amount": "Введите сумму", "enter_backup_password": "Введите пароль резервной копии", @@ -275,6 +277,7 @@ "extracted_address_content": "Вы будете отправлять средства\n${recipient_name}", "failed_authentication": "Ошибка аутентификации. ${state_error}", "faq": "FAQ", + "features": "Функции", "fetching": "Загрузка", "fiat_api": "Фиат API", "fiat_balance": "Фиатный баланс", @@ -794,6 +797,7 @@ "warning": "Предупреждение", "welcome": "Приветствуем в", "welcome_to_cakepay": "Добро пожаловать в Cake Pay!", + "what_is_silent_payments": "Что такое молчаливые платежи?", "widgets_address": "Адрес", "widgets_or": "или", "widgets_restore_from_blockheight": "Восстановить на высоте блока", diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 434940a31..a74c3c9e5 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "ยืนยันการหักค่าธรรมเนียม", "confirm_fee_deduction_content": "คุณตกลงที่จะหักค่าธรรมเนียมจากผลลัพธ์หรือไม่?", "confirm_sending": "ยืนยันการส่ง", + "confirm_silent_payments_switch_node": "ขณะนี้จำเป็นต้องเปลี่ยนโหนดเพื่อสแกนการชำระเงินแบบเงียบ", "confirmations": "การยืนยัน", "confirmed": "ยอดคงเหลือที่ยืนยันแล้ว", "confirmed_tx": "ซึ่งยืนยันแล้ว", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "เราสร้างที่อยู่ใหม่ทุกครั้งที่คุณใช้หนึ่งอย่าง แต่ที่อยู่เก่ายังสามารถใช้ได้ต่อไป", "email_address": "ที่อยู่อีเมล", "enable_replace_by_fee": "เปิดใช้งานการเปลี่ยนโดยค่าธรรมเนียม", + "enable_silent_payments_scanning": "เปิดใช้งานการสแกนการชำระเงินแบบเงียบ", "enabled": "เปิดใช้งาน", "enter_amount": "กรอกจำนวน", "enter_backup_password": "ป้อนรหัสผ่านสำรองที่นี่", @@ -275,6 +277,7 @@ "extracted_address_content": "คุณกำลังจะส่งเงินไปยัง\n${recipient_name}", "failed_authentication": "การยืนยันสิทธิ์ล้มเหลว ${state_error}", "faq": "คำถามที่พบบ่อย", + "features": "คุณสมบัติ", "fetching": "กำลังโหลด", "fiat_api": "API สกุลเงินตรา", "fiat_balance": "เฟียต บาลานซ์", @@ -793,6 +796,7 @@ "warning": "คำเตือน", "welcome": "ยินดีต้อนรับสู่", "welcome_to_cakepay": "ยินดีต้อนรับสู่ Cake Pay!", + "what_is_silent_payments": "การชำระเงินเงียบคืออะไร?", "widgets_address": "ที่อยู่", "widgets_or": "หรือ", "widgets_restore_from_blockheight": "กู้คืนจากระดับบล็อก", diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index 08be1b727..23c1758cf 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Kumpirmahin ang pagbabawas ng bayad", "confirm_fee_deduction_content": "Sumasang -ayon ka bang bawasan ang bayad mula sa output?", "confirm_sending": "Kumpirmahin ang pagpapadala", + "confirm_silent_payments_switch_node": "Sa kasalukuyan kinakailangan itong lumipat ng mga node upang i -scan ang mga tahimik na pagbabayad", "confirmations": "Mga kumpirmasyon", "confirmed": "Nakumpirma na balanse", "confirmed_tx": "Nakumpirma", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Bumubuo kami ng mga bagong address sa tuwing gumagamit ka ng isa, ngunit ang mga nakaraang address ay patuloy na gumagana", "email_address": "Email address", "enable_replace_by_fee": "Paganahin ang palitan-by-fee", + "enable_silent_payments_scanning": "Paganahin ang pag -scan ng tahimik na pagbabayad", "enabled": "Pinagana", "enter_amount": "Ipasok ang halaga", "enter_backup_password": "Ipasok ang backup password dito", @@ -275,6 +277,7 @@ "extracted_address_content": "Magpapadala ka ng pondo sa\n${recipient_name}", "failed_authentication": "Nabigong pagpapatunay. ${state_error}", "faq": "FAQ", + "features": "Mga tampok", "fetching": "Pagkuha", "fiat_api": "Fiat API", "fiat_balance": "Balanse ng fiat", @@ -793,6 +796,7 @@ "warning": "Babala", "welcome": "Maligayang pagdating sa", "welcome_to_cakepay": "Maligayang pagdating sa cake pay!", + "what_is_silent_payments": "Ano ang tahimik na pagbabayad?", "widgets_address": "Address", "widgets_or": "o", "widgets_restore_from_blockheight": "Ibalik mula sa blockheight", diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index 24f79222e..c349c1e53 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Ücret kesintisini onaylayın", "confirm_fee_deduction_content": "Ücreti çıktıdan düşürmeyi kabul ediyor musunuz?", "confirm_sending": "Göndermeyi onayla", + "confirm_silent_payments_switch_node": "Şu anda sessiz ödemeleri taramak için düğümleri değiştirmek gerekiyor", "confirmations": "Onay", "confirmed": "Onaylanmış Bakiye", "confirmed_tx": "Onaylanmış", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Adresini her kullandığında yeni adres oluşturuyoruz, ancak önceki adresler de çalışmaya devam eder", "email_address": "E-posta Adresi", "enable_replace_by_fee": "Farklı Değiştir'i Etkinleştir", + "enable_silent_payments_scanning": "Sessiz ödeme taramasını etkinleştirin", "enabled": "Etkin", "enter_amount": "Miktar Girin", "enter_backup_password": "Yedekleme parolasını buraya gir", @@ -275,6 +277,7 @@ "extracted_address_content": "Parayı buraya gönderceksin:\n${recipient_name}", "failed_authentication": "Doğrulama başarısız oldu. ${state_error}", "faq": "SSS", + "features": "Özellikler", "fetching": "Getiriliyor", "fiat_api": "İtibari Para API", "fiat_balance": "Fiat Bakiyesi", @@ -793,6 +796,7 @@ "warning": "Uyarı", "welcome": "Hoş Geldiniz", "welcome_to_cakepay": "Cake Pay'e Hoş Geldiniz!", + "what_is_silent_payments": "Sessiz ödemeler nedir?", "widgets_address": "Adres", "widgets_or": "veya", "widgets_restore_from_blockheight": "Blok yüksekliğinden geri yükle", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index f3643a64b..4bc71e0e7 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Підтвердьте відрахування комісії", "confirm_fee_deduction_content": "Чи погоджуєтесь ви вирахувати комісію з сумми одержувача?", "confirm_sending": "Підтвердити відправлення", + "confirm_silent_payments_switch_node": "В даний час потрібно перемикати вузли на сканування мовчазних платежів", "confirmations": "Підтвердження", "confirmed": "Підтверджений баланс", "confirmed_tx": "Підтверджений", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "Ми створюємо нові адреси щоразу, коли ви використовуєте їх, але попередні адреси продовжують працювати", "email_address": "Адреса електронної пошти", "enable_replace_by_fee": "Увімкнути заміну з комісією", + "enable_silent_payments_scanning": "Увімкнути мовчазні платежі сканування", "enabled": "Увімкнено", "enter_amount": "Введіть суму", "enter_backup_password": "Введіть пароль резервної копії", @@ -275,6 +277,7 @@ "extracted_address_content": "Ви будете відправляти кошти\n${recipient_name}", "failed_authentication": "Помилка аутентифікації. ${state_error}", "faq": "FAQ", + "features": "Особливості", "fetching": "Завантаження", "fiat_api": "Фіат API", "fiat_balance": "Фіат Баланс", @@ -794,6 +797,7 @@ "warning": "УВАГА", "welcome": "Вітаємо в", "welcome_to_cakepay": "Ласкаво просимо до Cake Pay!", + "what_is_silent_payments": "Що таке мовчазні платежі?", "widgets_address": "Адреса", "widgets_or": "або", "widgets_restore_from_blockheight": "Відновити на висоті блоку", diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index b39e211ef..89ebb2a63 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "فیس میں کٹوتی کی تصدیق کریں", "confirm_fee_deduction_content": "کیا آپ آؤٹ پٹ سے فیس کم کرنے پر راضی ہیں؟", "confirm_sending": "بھیجنے کی تصدیق کریں۔", + "confirm_silent_payments_switch_node": "فی الحال خاموش ادائیگیوں کو اسکین کرنے کے لئے نوڈس کو تبدیل کرنے کی ضرورت ہے", "confirmations": "تصدیقات", "confirmed": "تصدیق شدہ بیلنس", "confirmed_tx": "تصدیق", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "جب بھی آپ ایک کا استعمال کرتے ہیں تو ہم نئے پتے تیار کرتے ہیں، لیکن پچھلے پتے کام کرتے رہتے ہیں۔", "email_address": "ای میل اڈریس", "enable_replace_by_fee": "فی فیس کو تبدیل کریں", + "enable_silent_payments_scanning": "خاموش ادائیگیوں کو اسکیننگ کے قابل بنائیں", "enabled": "فعال", "enter_amount": "رقم درج کریں۔", "enter_backup_password": "یہاں بیک اپ پاس ورڈ درج کریں۔", @@ -275,6 +277,7 @@ "extracted_address_content": "آپ فنڈز بھیج رہے ہوں گے\n${recipient_name}", "failed_authentication": "ناکام تصدیق۔ ${state_error}", "faq": "عمومی سوالات", + "features": "خصوصیات", "fetching": "لا رہا ہے۔", "fiat_api": "Fiat API", "fiat_balance": "فیاٹ بیلنس", @@ -795,6 +798,7 @@ "warning": "وارننگ", "welcome": "میں خوش آمدید", "welcome_to_cakepay": "Cake پے میں خوش آمدید!", + "what_is_silent_payments": "خاموش ادائیگی کیا ہے؟", "widgets_address": "پتہ", "widgets_or": "یا", "widgets_restore_from_blockheight": "بلاک ہائیٹ سے بحال کریں۔", diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index ea9caf637..352cb40aa 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "Jẹrisi iyọkuro owo", "confirm_fee_deduction_content": "Ṣe o gba lati yọkuro idiyele naa kuro ni iṣejade?", "confirm_sending": "Jẹ́rìí sí ránṣẹ́", + "confirm_silent_payments_switch_node": "Lọwọlọwọ o nilo lati yi awọn apa pada si awọn sisanwo ipalọlọ", "confirmations": "Àwọn ẹ̀rí", "confirmed": "A ti jẹ́rìí ẹ̀", "confirmed_tx": "Jẹrisi", @@ -219,6 +220,7 @@ "electrum_address_disclaimer": "A dá àwọn àdírẹ́sì títun ní gbogbo àwọn ìgbà t'ẹ́ lo ó kan ṣùgbọ́n ẹ lè tẹ̀síwájú lo àwọn àdírẹ́sì tẹ́lẹ̀tẹ́lẹ̀.", "email_address": "Àdírẹ́sì ímeèlì", "enable_replace_by_fee": "Mu ki o rọpo", + "enable_silent_payments_scanning": "Mu ki awọn sisanwo ipalọlọ", "enabled": "Wọ́n tíwọn ti tan", "enter_amount": "Tẹ̀ iye", "enter_backup_password": "Tẹ̀ ọ̀rọ̀ aṣínà ti ẹ̀dà ḿbí", @@ -276,6 +278,7 @@ "extracted_address_content": "Ẹ máa máa fi owó ránṣẹ́ sí\n${recipient_name}", "failed_authentication": "Ìfẹ̀rílàdí pipòfo. ${state_error}", "faq": "Àwọn ìbéèrè l'a máa ń bèèrè", + "features": "Awọn ẹya", "fetching": "ń wá", "fiat_api": "Ojú ètò áàpù owó tí ìjọba pàṣẹ wa lò", "fiat_balance": "Fiat Iwontunws.funfun", @@ -794,6 +797,7 @@ "warning": "Ikilo", "welcome": "Ẹ káàbọ sí", "welcome_to_cakepay": "Ẹ káàbọ̀ sí Cake Pay!", + "what_is_silent_payments": "Kini awọn sisanwo ipalọlọ?", "widgets_address": "Àdírẹ́sì", "widgets_or": "tàbí", "widgets_restore_from_blockheight": "Dá padà sípò láti gíga àkójọpọ̀", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 822dc0b16..794128bf0 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -139,6 +139,7 @@ "confirm_fee_deduction": "确认费用扣除", "confirm_fee_deduction_content": "您是否同意从产出中扣除费用?", "confirm_sending": "确认发送", + "confirm_silent_payments_switch_node": "目前需要切换节点来扫描无声付款", "confirmations": "确认", "confirmed": "确认余额", "confirmed_tx": "确认的", @@ -218,6 +219,7 @@ "electrum_address_disclaimer": "每次您使用一个地址时,我们都会生成新地址,但之前的地址仍然有效", "email_address": "电子邮件地址", "enable_replace_by_fee": "启用by-Fee替换", + "enable_silent_payments_scanning": "启用无声付款扫描", "enabled": "启用", "enter_amount": "输入金额", "enter_backup_password": "在此处输入備用密码", @@ -275,6 +277,7 @@ "extracted_address_content": "您将汇款至\n${recipient_name}", "failed_authentication": "身份验证失败. ${state_error}", "faq": "FAQ", + "features": "特征", "fetching": "正在获取", "fiat_api": "法币API", "fiat_balance": "法币余额", @@ -793,6 +796,7 @@ "warning": "警告", "welcome": "欢迎使用", "welcome_to_cakepay": "欢迎来到 Cake Pay!", + "what_is_silent_payments": "什么是无声付款?", "widgets_address": "地址", "widgets_or": "或者", "widgets_restore_from_blockheight": "从块高还原", diff --git a/tool/configure.dart b/tool/configure.dart index 9c5f4b590..6eb8f0e6c 100644 --- a/tool/configure.dart +++ b/tool/configure.dart @@ -72,6 +72,7 @@ import 'package:cw_core/unspent_coins_info.dart'; import 'package:cw_core/wallet_service.dart'; import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/view_model/send/output.dart'; +import 'package:cake_wallet/store/settings_store.dart'; import 'package:hive/hive.dart'; import 'package:bitcoin_base/bitcoin_base.dart';"""; const bitcoinCWHeaders = """