mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-23 03:59:23 +00:00
feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert
This commit is contained in:
parent
8ea2e6ee40
commit
ddbb63ae46
41 changed files with 516 additions and 209 deletions
65
assets/images/cards.svg
Normal file
65
assets/images/cards.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 158 KiB |
|
@ -326,8 +326,15 @@ class CWBitcoin extends Bitcoin {
|
|||
return bitcoinWallet.silentPaymentsScanningActive;
|
||||
}
|
||||
|
||||
void setScanningActive(Object wallet, bool active) {
|
||||
Future<void> 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<void> 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;
|
||||
}
|
||||
}
|
||||
|
|
11
lib/di.dart
11
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<void> setup({
|
|||
(onSuccessfulPinSetup, _) => SetupPinCodePage(getIt.get<SetupPinCodeViewModel>(),
|
||||
onSuccessfulPinSetup: onSuccessfulPinSetup));
|
||||
|
||||
getIt.registerFactory(() => RescanViewModel(getIt.get<AppStore>().wallet!));
|
||||
getIt.registerFactory(
|
||||
() => RescanViewModel(getIt.get<AppStore>().wallet!, getIt.get<SettingsStore>()));
|
||||
|
||||
getIt.registerFactory(() => RescanPage(getIt.get<RescanViewModel>()));
|
||||
|
||||
|
@ -1048,7 +1049,7 @@ Future<void> setup({
|
|||
|
||||
getIt.registerFactory(() => IoniaGiftCardsListViewModel(ioniaService: getIt.get<IoniaService>()));
|
||||
|
||||
getIt.registerFactory(() => MarketPlaceViewModel(getIt.get<IoniaService>()));
|
||||
getIt.registerFactory(() => CakeFeaturesViewModel(getIt.get<IoniaService>()));
|
||||
|
||||
getIt.registerFactory(() => IoniaAuthViewModel(ioniaService: getIt.get<IoniaService>()));
|
||||
|
||||
|
@ -1145,9 +1146,9 @@ Future<void> setup({
|
|||
getIt.registerFactory(() => IoniaAccountCardsPage(getIt.get<IoniaAccountViewModel>()));
|
||||
|
||||
getIt.registerFactoryParam<RBFDetailsPage, TransactionInfo, void>(
|
||||
(TransactionInfo transactionInfo, _) => RBFDetailsPage(
|
||||
(TransactionInfo transactionInfo, _) => RBFDetailsPage(
|
||||
transactionDetailsViewModel:
|
||||
getIt.get<TransactionDetailsViewModel>(param1: transactionInfo)));
|
||||
getIt.get<TransactionDetailsViewModel>(param1: transactionInfo)));
|
||||
|
||||
getIt.registerFactory(() => AnonPayApi(
|
||||
useTorOnly: getIt.get<SettingsStore>().exchangeStatus == ExchangeApiMode.torOnly,
|
||||
|
|
|
@ -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<MarketPlaceViewModel>(),
|
||||
cakeFeaturesViewModel: getIt.get<CakeFeaturesViewModel>(),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
|
@ -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<MarketPlaceViewModel>(),
|
||||
cakeFeaturesViewModel: getIt.get<CakeFeaturesViewModel>(),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
|
|
@ -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<void>(
|
||||
|
@ -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<BalancePageTheme>()!.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<BalancePageTheme>()!.assetTitleColor,
|
||||
height: 1,
|
||||
),
|
||||
maxLines: 1,
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 8),
|
||||
child: StandardSwitch(
|
||||
value: silentPaymentsScanningActive, onTaped: setSilentPaymentsScanning),
|
||||
)
|
||||
],
|
||||
),
|
||||
]
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
204
lib/src/screens/dashboard/pages/cake_features_page.dart
Normal file
204
lib/src/screens/dashboard/pages/cake_features_page.dart
Normal file
|
@ -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<DashboardPageTheme>()!.pageTitleTextColor,
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
controller: _scrollController,
|
||||
children: <Widget>[
|
||||
// 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<BalancePageTheme>()!
|
||||
.labelTextColor,
|
||||
height: 1,
|
||||
),
|
||||
softWrap: true,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 4),
|
||||
child: Icon(Icons.help_outline,
|
||||
size: 16,
|
||||
color: Theme.of(context)
|
||||
.extension<BalancePageTheme>()!
|
||||
.labelTextColor),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
Observer(
|
||||
builder: (_) => StandardSwitch(
|
||||
value: dashboardViewModel.silentPaymentsScanningActive,
|
||||
onTaped: () => _toggleSilentPaymentsScanning(context),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
onTap: () => _toggleSilentPaymentsScanning(context),
|
||||
icon: Icon(
|
||||
Icons.lock,
|
||||
color:
|
||||
Theme.of(context).extension<DashboardPageTheme>()!.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<void>(
|
||||
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<void> _toggleSilentPaymentsScanning(BuildContext context) async {
|
||||
final isSilentPaymentsScanningActive = dashboardViewModel.silentPaymentsScanningActive;
|
||||
final newValue = !isSilentPaymentsScanningActive;
|
||||
|
||||
final needsToSwitch = bitcoin!.getNodeIsCakeElectrs(dashboardViewModel.wallet) == false;
|
||||
|
||||
if (needsToSwitch) {
|
||||
return showPopUp<void>(
|
||||
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);
|
||||
}
|
||||
}
|
|
@ -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<DashboardPageTheme>()!.pageTitleTextColor,
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
controller: _scrollController,
|
||||
children: <Widget>[
|
||||
// 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<void>(
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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<void> _toggleSilentPaymentsScanning(BuildContext context) async {
|
||||
final needsToSwitch = bitcoin!.getNodeIsCakeElectrs(_rescanViewModel.wallet) == false;
|
||||
|
||||
if (needsToSwitch) {
|
||||
return showPopUp<void>(
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<BalancePageTheme>()!.cardBorderColor,
|
||||
),
|
||||
),
|
||||
child:
|
||||
Column(
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
title,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor,
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.w900,
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
title,
|
||||
style: TextStyle(
|
||||
color:
|
||||
Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor,
|
||||
fontSize: 24,
|
||||
fontWeight: FontWeight.w900,
|
||||
),
|
||||
softWrap: true,
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
Text(
|
||||
subTitle,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context)
|
||||
.extension<DashboardPageTheme>()!
|
||||
.cardTextColor,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontFamily: 'Lato'),
|
||||
softWrap: true,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
Text(
|
||||
subTitle,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).extension<DashboardPageTheme>()!.cardTextColor,
|
||||
fontWeight: FontWeight.w500,
|
||||
fontFamily: 'Lato'),
|
||||
)
|
||||
if (svgPicture != null) svgPicture!,
|
||||
if (icon != null) icon!
|
||||
],
|
||||
),
|
||||
if (hint != null) ...[
|
||||
SizedBox(height: 10),
|
||||
hint!,
|
||||
]
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
16
lib/view_model/dashboard/cake_features_view_model.dart
Normal file
16
lib/view_model/dashboard/cake_features_view_model.dart
Normal file
|
@ -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<bool> isIoniaUserAuthenticated() async {
|
||||
return await _ioniaService.isLogined();
|
||||
}
|
||||
}
|
|
@ -318,7 +318,7 @@ abstract class DashboardViewModelBase with Store {
|
|||
silentPaymentsScanningActive = active;
|
||||
|
||||
if (hasSilentPayments) {
|
||||
bitcoin!.setScanningActive(wallet, active);
|
||||
bitcoin!.setScanningActive(wallet, settingsStore, active);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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<bool> isIoniaUserAuthenticated() async {
|
||||
return await _ioniaService.isLogined();
|
||||
}
|
||||
}
|
|
@ -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<void> 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;
|
||||
}
|
||||
|
|
|
@ -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": "استعادة من ارتفاع البلوك",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "ब्लॉकचेन से पुनर्स्थापित करें",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "ブロックの高さから復元",
|
||||
|
|
|
@ -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": "블록 높이에서 복원",
|
||||
|
|
|
@ -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": "အမြင့်မှ ပြန်လည်ရယူပါ။",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "Восстановить на высоте блока",
|
||||
|
|
|
@ -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": "กู้คืนจากระดับบล็อก",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "Відновити на висоті блоку",
|
||||
|
|
|
@ -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": "بلاک ہائیٹ سے بحال کریں۔",
|
||||
|
|
|
@ -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ọ̀",
|
||||
|
|
|
@ -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": "从块高还原",
|
||||
|
|
|
@ -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 = """
|
||||
|
|
Loading…
Reference in a new issue