CW-1076-payjoin-ux-enhancements (#2282)

* feat: Add Payjoin Unavailable bottom sheet

* feat: Add Payjoin Info Card to Dashboard

* feat: Open payjoin docs on learn more
This commit is contained in:
Konstantin Ullrich 2025-05-24 03:24:06 +02:00 committed by GitHub
parent 1aac17676d
commit 939e5d9279
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 480 additions and 149 deletions

View file

@ -83,6 +83,7 @@ class PreferencesKey {
static const lookupsENS = 'looks_up_ens'; static const lookupsENS = 'looks_up_ens';
static const lookupsWellKnown = 'looks_up_well_known'; static const lookupsWellKnown = 'looks_up_well_known';
static const usePayjoin = 'use_payjoin'; static const usePayjoin = 'use_payjoin';
static const showPayjoinCard = 'show_payjoin_card';
static const showCameraConsent = 'show_camera_consent'; static const showCameraConsent = 'show_camera_consent';
static const showDecredInfoCard = 'show_decred_info_card'; static const showDecredInfoCard = 'show_decred_info_card';

View file

@ -150,13 +150,13 @@ class AddressPage extends BasePage {
Expanded( Expanded(
child: Observer( child: Observer(
builder: (_) => QRWidget( builder: (_) => QRWidget(
formKey: _formKey, formKey: _formKey,
addressListViewModel: addressListViewModel, addressListViewModel: addressListViewModel,
amountTextFieldFocusNode: _cryptoAmountFocus, amountTextFieldFocusNode: _cryptoAmountFocus,
amountController: _amountController, amountController: _amountController,
isLight: dashboardViewModel.settingsStore.currentTheme.type == currentTheme:
ThemeType.light, dashboardViewModel.settingsStore.currentTheme,
))), ))),
SizedBox(height: 16), SizedBox(height: 16),
Observer(builder: (_) { Observer(builder: (_) {
if (addressListViewModel.hasAddressList) { if (addressListViewModel.hasAddressList) {

View file

@ -325,6 +325,39 @@ class CryptoBalanceWidget extends StatelessWidget {
), ),
), ),
], ],
if (dashboardViewModel.showPayjoinCard) ...[
SizedBox(height: 10),
Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: InfoCard(
title: "Payjoin",
description: S.of(context).payjoin_card_content,
hintWidget: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => launchUrl(
Uri.parse("https://docs.cakewallet.com/cryptos/bitcoin/#payjoin"),
mode: LaunchMode.externalApplication,
),
child: Text(
S.of(context).learn_more,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor,
height: 1,
),
softWrap: true,
),
),
image: 'assets/images/payjoin.png',
leftButtonTitle: S.of(context).litecoin_mweb_dismiss,
rightButtonTitle: S.of(context).enable,
leftButtonAction: () => dashboardViewModel.dismissPayjoin(),
rightButtonAction: () => _enablePayjoin(context),
),
),
],
], ],
); );
}), }),
@ -363,6 +396,21 @@ class CryptoBalanceWidget extends StatelessWidget {
} }
return dashboardViewModel.setSilentPaymentsScanning(newValue); return dashboardViewModel.setSilentPaymentsScanning(newValue);
}
void _enablePayjoin(BuildContext context) {
showPopUp<void>(
context: context,
builder: (BuildContext context) => AlertWithOneAction(
alertTitle: S.of(context).payjoin_enabling_popup_title,
alertContent: S.of(context).payjoin_enabling_popup_content,
buttonText: S.of(context).ok,
buttonAction: () {
Navigator.of(context).pop();
},
));
dashboardViewModel.enablePayjoin();
} }
Future<void> _enableMweb(BuildContext context) async { Future<void> _enableMweb(BuildContext context) async {

View file

@ -1,29 +1,14 @@
import 'package:cake_wallet/src/screens/nano_accounts/nano_account_list_page.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/screens/receive/widgets/address_list.dart'; import 'package:cake_wallet/src/screens/receive/widgets/address_list.dart';
import 'package:cake_wallet/src/screens/receive/widgets/qr_widget.dart';
import 'package:cake_wallet/src/widgets/gradient_background.dart';
import 'package:cake_wallet/src/widgets/keyboard_done_button.dart'; import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
import 'package:cake_wallet/themes/extensions/balance_page_theme.dart'; import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/keyboard_theme.dart'; import 'package:cake_wallet/themes/extensions/keyboard_theme.dart';
import 'package:cake_wallet/themes/extensions/receive_page_theme.dart';
import 'package:cake_wallet/src/widgets/gradient_background.dart';
import 'package:cake_wallet/src/widgets/section_divider.dart';
import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/utils/share_util.dart'; import 'package:cake_wallet/utils/share_util.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/di.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/screens/monero_accounts/monero_account_list_page.dart';
import 'package:cake_wallet/src/screens/receive/widgets/header_tile.dart';
import 'package:cake_wallet/src/screens/receive/widgets/address_cell.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_account_list_header.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_header.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_item.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart'; import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart';
import 'package:cake_wallet/src/screens/receive/widgets/qr_widget.dart'; import 'package:flutter/material.dart';
import 'package:keyboard_actions/keyboard_actions.dart'; import 'package:keyboard_actions/keyboard_actions.dart';
class ReceivePage extends BasePage { class ReceivePage extends BasePage {
@ -55,24 +40,23 @@ class ReceivePage extends BasePage {
final FocusNode _cryptoAmountFocus; final FocusNode _cryptoAmountFocus;
@override @override
Widget middle(BuildContext context) { Widget middle(BuildContext context) => Text(
return Text( title,
title, style: TextStyle(
style: TextStyle(
fontSize: 18.0, fontSize: 18.0,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontFamily: 'Lato', fontFamily: 'Lato',
color: pageIconColor(context)), color: pageIconColor(context),
); ),
} );
@override @override
Widget Function(BuildContext, Widget) get rootWrapper => Widget Function(BuildContext, Widget) get rootWrapper =>
(BuildContext context, Widget scaffold) => GradientBackground(scaffold: scaffold); (BuildContext context, Widget scaffold) =>
GradientBackground(scaffold: scaffold);
@override @override
Widget trailing(BuildContext context) { Widget trailing(BuildContext context) => Material(
return Material(
color: Colors.transparent, color: Colors.transparent,
child: Semantics( child: Semantics(
label: S.of(context).share, label: S.of(context).share,
@ -82,27 +66,25 @@ class ReceivePage extends BasePage {
highlightColor: Colors.transparent, highlightColor: Colors.transparent,
splashColor: Colors.transparent, splashColor: Colors.transparent,
iconSize: 25, iconSize: 25,
onPressed: () { onPressed: () => ShareUtil.share(
ShareUtil.share( text: addressListViewModel.uri.toString(),
text: addressListViewModel.uri.toString(), context: context,
context: context, ),
);
},
icon: Icon( icon: Icon(
Icons.share, Icons.share,
size: 20, size: 20,
color: pageIconColor(context), color: pageIconColor(context),
), ),
), ),
)); ),
} );
@override @override
Widget body(BuildContext context) { Widget body(BuildContext context) => KeyboardActions(
return KeyboardActions(
config: KeyboardActionsConfig( config: KeyboardActionsConfig(
keyboardActionsPlatform: KeyboardActionsPlatform.IOS, keyboardActionsPlatform: KeyboardActionsPlatform.IOS,
keyboardBarColor: Theme.of(context).extension<KeyboardTheme>()!.keyboardBarColor, keyboardBarColor:
Theme.of(context).extension<KeyboardTheme>()!.keyboardBarColor,
nextFocus: false, nextFocus: false,
actions: [ actions: [
KeyboardActionsItem( KeyboardActionsItem(
@ -121,23 +103,28 @@ class ReceivePage extends BasePage {
heroTag: _heroTag, heroTag: _heroTag,
amountTextFieldFocusNode: _cryptoAmountFocus, amountTextFieldFocusNode: _cryptoAmountFocus,
amountController: _amountController, amountController: _amountController,
isLight: currentTheme.type == ThemeType.light, currentTheme: currentTheme),
),
), ),
AddressList(addressListViewModel: addressListViewModel, currentTheme: currentTheme), AddressList(
addressListViewModel: addressListViewModel,
currentTheme: currentTheme),
Padding( Padding(
padding: EdgeInsets.fromLTRB(24, 24, 24, 32), padding: EdgeInsets.fromLTRB(24, 24, 24, 32),
child: Text( child: Text(
addressListViewModel.isSilentPayments addressListViewModel.isSilentPayments
? S.of(context).silent_payments_disclaimer ? S.of(context).silent_payments_disclaimer
: S.of(context).electrum_address_disclaimer, : S.of(context).electrum_address_disclaimer,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 15, fontSize: 15,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor)), color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor,
),
),
), ),
], ],
), ),
)); ),
} );
} }

View file

@ -1,30 +1,32 @@
import 'package:cake_wallet/entities/qr_view_data.dart'; import 'package:cake_wallet/entities/qr_view_data.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart'; import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/picker_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart'; import 'package:cake_wallet/src/screens/exchange/widgets/currency_picker.dart';
import 'package:cake_wallet/src/screens/receive/widgets/currency_input_field.dart'; import 'package:cake_wallet/src/screens/receive/widgets/currency_input_field.dart';
import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart';
import 'package:cake_wallet/src/widgets/bottom_sheet/info_bottom_sheet_widget.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/picker_theme.dart';
import 'package:cake_wallet/themes/extensions/qr_code_theme.dart';
import 'package:cake_wallet/themes/theme_base.dart'; import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/utils/address_formatter.dart'; import 'package:cake_wallet/utils/address_formatter.dart';
import 'package:cake_wallet/utils/brightness_util.dart'; import 'package:cake_wallet/utils/brightness_util.dart';
import 'package:cake_wallet/utils/responsive_layout_util.dart'; import 'package:cake_wallet/utils/responsive_layout_util.dart';
import 'package:cake_wallet/utils/show_bar.dart'; import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:cake_wallet/generated/i18n.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:cake_wallet/src/screens/receive/widgets/qr_image.dart';
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_list_view_model.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
class QRWidget extends StatelessWidget { class QRWidget extends StatelessWidget {
QRWidget({ QRWidget({
required this.addressListViewModel, required this.addressListViewModel,
required this.isLight, required this.currentTheme,
this.qrVersion, this.qrVersion,
this.heroTag, this.heroTag,
required this.amountController, required this.amountController,
@ -36,7 +38,7 @@ class QRWidget extends StatelessWidget {
final TextEditingController amountController; final TextEditingController amountController;
final FocusNode? amountTextFieldFocusNode; final FocusNode? amountTextFieldFocusNode;
final GlobalKey<FormState> formKey; final GlobalKey<FormState> formKey;
final bool isLight; final ThemeBase currentTheme;
final int? qrVersion; final int? qrVersion;
final String? heroTag; final String? heroTag;
@ -47,11 +49,14 @@ class QRWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final copyImage = Image.asset('assets/images/copy_address.png', final copyImage = Image.asset('assets/images/copy_address.png',
color: Theme.of(context).extension<QRCodeTheme>()!.qrWidgetCopyButtonColor); color: Theme.of(context)
.extension<QRCodeTheme>()!
.qrWidgetCopyButtonColor);
// This magic number for wider screen sets the text input focus at center of the inputfield // This magic number for wider screen sets the text input focus at center of the inputfield
final _width = final _width = responsiveLayoutUtil.shouldRenderMobileUI
responsiveLayoutUtil.shouldRenderMobileUI ? MediaQuery.of(context).size.width : 500; ? MediaQuery.of(context).size.width
: 500;
return Center( return Center(
child: SingleChildScrollView( child: SingleChildScrollView(
@ -69,7 +74,9 @@ class QRWidget extends StatelessWidget {
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Theme.of(context).extension<DashboardPageTheme>()!.textColor), color: Theme.of(context)
.extension<DashboardPageTheme>()!
.textColor),
), ),
), ),
Row( Row(
@ -82,7 +89,8 @@ class QRWidget extends StatelessWidget {
onTap: () { onTap: () {
BrightnessUtil.changeBrightnessForFunction( BrightnessUtil.changeBrightnessForFunction(
() async { () async {
await Navigator.pushNamed(context, Routes.fullscreenQR, await Navigator.pushNamed(
context, Routes.fullscreenQR,
arguments: QrViewData( arguments: QrViewData(
data: addressUri.toString(), data: addressUri.toString(),
heroTag: heroTag, heroTag: heroTag,
@ -97,7 +105,8 @@ class QRWidget extends StatelessWidget {
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border(top: BorderSide.none), border: Border(top: BorderSide.none),
borderRadius: BorderRadius.all(Radius.circular(5)), borderRadius:
BorderRadius.all(Radius.circular(5)),
color: Colors.white, color: Colors.white,
), ),
child: Column( child: Column(
@ -111,10 +120,64 @@ class QRWidget extends StatelessWidget {
), ),
), ),
), ),
if (addressListViewModel.payjoinEndpoint.isNotEmpty && if (addressListViewModel
!addressListViewModel.isSilentPayments) ...[ .isPayjoinUnavailable &&
!addressListViewModel
.isSilentPayments) ...[
GestureDetector(
onTap: () =>
_onPayjoinInactivePressed(context),
child: Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Padding(
padding: EdgeInsets.only(
top: 4,
bottom: 4,
right: 4,
),
child: Image.asset(
'assets/images/payjoin.png',
width: 20,
),
),
Text(
S.of(context).payjoin_unavailable,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
color: Color.fromARGB(
255, 139, 137, 139),
),
),
Padding(
padding: EdgeInsets.only(
top: 4,
bottom: 4,
left: 4,
),
child: CircleAvatar(
radius: 7,
backgroundColor: Colors.black,
child: Icon(
Icons.question_mark,
size: 10,
color: Colors.white,
),
),
),
],
),
),
],
if (addressListViewModel
.payjoinEndpoint.isNotEmpty &&
!addressListViewModel
.isSilentPayments) ...[
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment:
MainAxisAlignment.center,
children: [ children: [
Padding( Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -151,37 +214,43 @@ class QRWidget extends StatelessWidget {
), ),
], ],
), ),
Observer(builder: (_) { Observer(
return Padding( builder: (_) => Padding(
padding: EdgeInsets.only(top: 10), padding: EdgeInsets.only(top: 10),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Form( child: Form(
key: formKey, key: formKey,
child: CurrencyAmountTextField( child: CurrencyAmountTextField(
selectedCurrency: _currencyName, selectedCurrency: _currencyName,
amountFocusNode: amountTextFieldFocusNode, amountFocusNode: amountTextFieldFocusNode,
amountController: amountController, amountController: amountController,
padding: EdgeInsets.only(top: 20, left: _width / 4), padding:
currentTheme: isLight ? ThemeType.light : ThemeType.dark, EdgeInsets.only(top: 20, left: _width / 4),
isAmountEditable: true, currentTheme: currentTheme.type,
tag: addressListViewModel.selectedCurrency.tag, isAmountEditable: true,
onTapPicker: () => _presentPicker(context), tag: addressListViewModel.selectedCurrency.tag,
isPickerEnable: true)), onTapPicker: () => _presentPicker(context),
), isPickerEnable: true,
], ),
), ),
); ),
}), ],
Divider(height: 1, color: Theme.of(context).extension<PickerTheme>()!.dividerColor), ),
)),
Divider(
height: 1,
color:
Theme.of(context).extension<PickerTheme>()!.dividerColor),
Padding( Padding(
padding: EdgeInsets.only(top: 20, bottom: 8), padding: EdgeInsets.only(top: 20, bottom: 8),
child: Builder( child: Builder(
builder: (context) => Observer( builder: (context) => Observer(
builder: (context) => GestureDetector( builder: (context) => GestureDetector(
onTap: () { onTap: () {
Clipboard.setData(ClipboardData(text: addressUri.address)); Clipboard.setData(
ClipboardData(text: addressUri.address));
showBar<void>(context, S.of(context).copied_to_clipboard); showBar<void>(context, S.of(context).copied_to_clipboard);
}, },
child: Row( child: Row(
@ -189,17 +258,16 @@ class QRWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: AddressFormatter.buildSegmentedAddress( child: AddressFormatter.buildSegmentedAddress(
address: addressUri.address, address: addressUri.address,
walletType: addressListViewModel.type, walletType: addressListViewModel.type,
textAlign: TextAlign.center, textAlign: TextAlign.center,
evenTextStyle: TextStyle( evenTextStyle: TextStyle(
fontSize: 15, fontSize: 15,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Theme.of(context).extension<DashboardPageTheme>()!.textColor, color: Theme.of(context)
), .extension<DashboardPageTheme>()!
), .textColor))),
),
Padding( Padding(
padding: EdgeInsets.only(left: 12), padding: EdgeInsets.only(left: 12),
child: copyImage, child: copyImage,
@ -212,12 +280,14 @@ class QRWidget extends StatelessWidget {
), ),
Observer( Observer(
builder: (_) => Offstage( builder: (_) => Offstage(
offstage: addressListViewModel.payjoinEndpoint.isEmpty || addressListViewModel.isSilentPayments, offstage: addressListViewModel.payjoinEndpoint.isEmpty ||
addressListViewModel.isSilentPayments,
child: Padding( child: Padding(
padding: EdgeInsets.only(top: 12), padding: EdgeInsets.only(top: 12),
child: PrimaryImageButton( child: PrimaryImageButton(
onPressed: () { onPressed: () {
Clipboard.setData(ClipboardData(text: addressUri.toString())); Clipboard.setData(
ClipboardData(text: addressUri.toString()));
showBar<void>(context, S.of(context).copied_to_clipboard); showBar<void>(context, S.of(context).copied_to_clipboard);
}, },
image: Image.asset( image: Image.asset(
@ -226,7 +296,9 @@ class QRWidget extends StatelessWidget {
), ),
text: S.of(context).copy_payjoin_address, text: S.of(context).copy_payjoin_address,
color: Theme.of(context).cardColor, color: Theme.of(context).cardColor,
textColor: Theme.of(context).extension<CakeTextTheme>()!.buttonTextColor, textColor: Theme.of(context)
.extension<CakeTextTheme>()!
.buttonTextColor,
), ),
), ),
), ),
@ -239,7 +311,9 @@ class QRWidget extends StatelessWidget {
String get _currencyName { String get _currencyName {
if (addressListViewModel.selectedCurrency is CryptoCurrency) { if (addressListViewModel.selectedCurrency is CryptoCurrency) {
return (addressListViewModel.selectedCurrency as CryptoCurrency).title.toUpperCase(); return (addressListViewModel.selectedCurrency as CryptoCurrency)
.title
.toUpperCase();
} }
return addressListViewModel.selectedCurrency.name.toUpperCase(); return addressListViewModel.selectedCurrency.name.toUpperCase();
} }
@ -257,4 +331,23 @@ class QRWidget extends StatelessWidget {
// update amount if currency changed // update amount if currency changed
addressListViewModel.changeAmount(amountController.text); addressListViewModel.changeAmount(amountController.text);
} }
void _onPayjoinInactivePressed(BuildContext context) {
showModalBottomSheet(
context: context,
builder: (context) => InfoBottomSheet(
titleText: S.of(context).payjoin_unavailable_sheet_title,
content: S.of(context).payjoin_unavailable_sheet_content,
currentTheme: currentTheme,
isTwoAction: true,
leftButtonText: S.of(context).learn_more,
actionLeftButton: () => launchUrl(
Uri.parse("https://docs.cakewallet.com/cryptos/bitcoin/#payjoin"),
mode: LaunchMode.externalApplication,
),
rightButtonText: S.of(context).ok,
actionRightButton: () => Navigator.of(context).pop(),
),
);
}
} }

View file

@ -122,6 +122,7 @@ abstract class SettingsStoreBase with Store {
required this.lookupsENS, required this.lookupsENS,
required this.lookupsWellKnown, required this.lookupsWellKnown,
required this.usePayjoin, required this.usePayjoin,
required this.showPayjoinCard,
required this.customBitcoinFeeRate, required this.customBitcoinFeeRate,
required this.silentPaymentsCardDisplay, required this.silentPaymentsCardDisplay,
required this.silentPaymentsAlwaysScan, required this.silentPaymentsAlwaysScan,
@ -489,6 +490,11 @@ abstract class SettingsStoreBase with Store {
(bool usePayjoin) => (bool usePayjoin) =>
_sharedPreferences.setBool(PreferencesKey.usePayjoin, usePayjoin)); _sharedPreferences.setBool(PreferencesKey.usePayjoin, usePayjoin));
reaction(
(_) => showPayjoinCard,
(bool showPayjoinCard) => _sharedPreferences.setBool(
PreferencesKey.showPayjoinCard, showPayjoinCard));
// secure storage keys: // secure storage keys:
reaction( reaction(
(_) => allowBiometricalAuthentication, (_) => allowBiometricalAuthentication,
@ -811,6 +817,9 @@ abstract class SettingsStoreBase with Store {
@observable @observable
bool usePayjoin; bool usePayjoin;
@observable
bool showPayjoinCard;
@observable @observable
SyncMode currentSyncMode; SyncMode currentSyncMode;
@ -1019,6 +1028,7 @@ abstract class SettingsStoreBase with Store {
final lookupsENS = sharedPreferences.getBool(PreferencesKey.lookupsENS) ?? true; final lookupsENS = sharedPreferences.getBool(PreferencesKey.lookupsENS) ?? true;
final lookupsWellKnown = sharedPreferences.getBool(PreferencesKey.lookupsWellKnown) ?? true; final lookupsWellKnown = sharedPreferences.getBool(PreferencesKey.lookupsWellKnown) ?? true;
final usePayjoin = sharedPreferences.getBool(PreferencesKey.usePayjoin) ?? false; final usePayjoin = sharedPreferences.getBool(PreferencesKey.usePayjoin) ?? false;
final showPayjoinCard = sharedPreferences.getBool(PreferencesKey.showPayjoinCard) ?? true;
final customBitcoinFeeRate = sharedPreferences.getInt(PreferencesKey.customBitcoinFeeRate) ?? 1; final customBitcoinFeeRate = sharedPreferences.getInt(PreferencesKey.customBitcoinFeeRate) ?? 1;
final silentPaymentsCardDisplay = final silentPaymentsCardDisplay =
sharedPreferences.getBool(PreferencesKey.silentPaymentsCardDisplay) ?? true; sharedPreferences.getBool(PreferencesKey.silentPaymentsCardDisplay) ?? true;
@ -1322,6 +1332,7 @@ abstract class SettingsStoreBase with Store {
lookupsENS: lookupsENS, lookupsENS: lookupsENS,
lookupsWellKnown: lookupsWellKnown, lookupsWellKnown: lookupsWellKnown,
usePayjoin: usePayjoin, usePayjoin: usePayjoin,
showPayjoinCard: showPayjoinCard,
customBitcoinFeeRate: customBitcoinFeeRate, customBitcoinFeeRate: customBitcoinFeeRate,
silentPaymentsCardDisplay: silentPaymentsCardDisplay, silentPaymentsCardDisplay: silentPaymentsCardDisplay,
silentPaymentsAlwaysScan: silentPaymentsAlwaysScan, silentPaymentsAlwaysScan: silentPaymentsAlwaysScan,

View file

@ -33,7 +33,6 @@ import 'package:cake_wallet/view_model/dashboard/payjoin_transaction_list_item.d
import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/trade_list_item.dart';
import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart'; import 'package:cake_wallet/view_model/dashboard/transaction_list_item.dart';
import 'package:cake_wallet/view_model/settings/sync_mode.dart'; import 'package:cake_wallet/view_model/settings/sync_mode.dart';
import 'package:cake_wallet/wallet_type_utils.dart';
import 'package:cake_wallet/wownero/wownero.dart' as wow; import 'package:cake_wallet/wownero/wownero.dart' as wow;
import 'package:cryptography/cryptography.dart'; import 'package:cryptography/cryptography.dart';
import 'package:cw_core/balance.dart'; import 'package:cw_core/balance.dart';
@ -559,6 +558,12 @@ abstract class DashboardViewModelBase with Store {
@observable @observable
late bool showDecredInfoCard; late bool showDecredInfoCard;
@computed
bool get showPayjoinCard =>
wallet.type == WalletType.bitcoin &&
settingsStore.showPayjoinCard &&
!settingsStore.usePayjoin;
@observable @observable
bool backgroundSyncEnabled = false; bool backgroundSyncEnabled = false;
@ -764,6 +769,18 @@ abstract class DashboardViewModelBase with Store {
sharedPreferences.setBool(PreferencesKey.showDecredInfoCard, false); sharedPreferences.setBool(PreferencesKey.showDecredInfoCard, false);
} }
@action
void dismissPayjoin() {
settingsStore.showPayjoinCard = false;
}
@action
void enablePayjoin() {
settingsStore.usePayjoin = true;
settingsStore.showPayjoinCard = false;
bitcoin!.updatePayjoinState(wallet, true);
}
BalanceViewModel balanceViewModel; BalanceViewModel balanceViewModel;
AppStore appStore; AppStore appStore;

View file

@ -310,6 +310,12 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
? bitcoin!.getPayjoinEndpoint(wallet) ? bitcoin!.getPayjoinEndpoint(wallet)
: ""; : "";
@computed
bool get isPayjoinUnavailable =>
wallet.type == WalletType.bitcoin &&
_settingsStore.usePayjoin &&
payjoinEndpoint.isEmpty;
@computed @computed
PaymentURI get uri { PaymentURI get uri {
switch (wallet.type) { switch (wallet.type) {

View file

@ -548,10 +548,16 @@
"password": "كلمة المرور", "password": "كلمة المرور",
"paste": "لصق", "paste": "لصق",
"pause_wallet_creation": ".ﺎﻴًﻟﺎﺣ ﺎﺘًﻗﺆﻣ ﺔﻔﻗﻮﺘﻣ Haven Wallet ءﺎﺸﻧﺇ ﻰﻠﻋ ﺓﺭﺪﻘﻟﺍ", "pause_wallet_creation": ".ﺎﻴًﻟﺎﺣ ﺎﺘًﻗﺆﻣ ﺔﻔﻗﻮﺘﻣ Haven Wallet ءﺎﺸﻧﺇ ﻰﻠﻋ ﺓﺭﺪﻘﻟﺍ",
"payjoin_card_content": "Payjoin هي ميزة جديدة للحفاظ على الخصوصية وتوفير الرسوم في Bitcoin.",
"payjoin_details": "Payjoin تفاصيل", "payjoin_details": "Payjoin تفاصيل",
"payjoin_enabled": "Payjoin تمكين", "payjoin_enabled": "Payjoin تمكين",
"payjoin_enabling_popup_content": "يمكنك التبديل Payjoin ضمن القائمة → الخصوصية ← استخدام Payjoin لتمكينه أو تعطيله لاحقًا.",
"payjoin_enabling_popup_title": "تمكين Payjoin",
"payjoin_request_awaiting_tx": "في انتظار المعاملة", "payjoin_request_awaiting_tx": "في انتظار المعاملة",
"payjoin_request_in_progress": "في تَقَدم", "payjoin_request_in_progress": "في تَقَدم",
"payjoin_unavailable": "Payjoin غير متوفر",
"payjoin_unavailable_sheet_content": "يتطلب استلام معاملة Payjoin أن تكون Bitcoin جاهزًا للاستخدام.",
"payjoin_unavailable_sheet_title": "لماذا Payjoin غير متوفر؟",
"payment_id": "معرف الدفع:", "payment_id": "معرف الدفع:",
"payment_was_received": "تم استلام الدفع الخاص بك.", "payment_was_received": "تم استلام الدفع الخاص بك.",
"pending": " (في الإنتظار)", "pending": " (في الإنتظار)",
@ -1071,4 +1077,4 @@
"you_will_send": "تحويل من", "you_will_send": "تحويل من",
"youCanGoBackToYourDapp": "يمكنك العودة إلى DAPP الخاص بك الآن", "youCanGoBackToYourDapp": "يمكنك العودة إلى DAPP الخاص بك الآن",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "Парола", "password": "Парола",
"paste": "Поставяне", "paste": "Поставяне",
"pause_wallet_creation": "Възможността за създаване на Haven Wallet в момента е на пауза.", "pause_wallet_creation": "Възможността за създаване на Haven Wallet в момента е на пауза.",
"payjoin_card_content": "Payjoin е нова функция за запазване на поверителност и пестене на такси в Bitcoin.",
"payjoin_details": "Payjoin подробности", "payjoin_details": "Payjoin подробности",
"payjoin_enabled": "Payjoin enabled", "payjoin_enabled": "Payjoin enabled",
"payjoin_enabling_popup_content": "Можете да превключвате Payjoin под меню → поверителност → Използвайте Payjoin, за да го активирате или деактивирате по -късно.",
"payjoin_enabling_popup_title": "Активиране Payjoin",
"payjoin_request_awaiting_tx": "В очакване на транзакция", "payjoin_request_awaiting_tx": "В очакване на транзакция",
"payjoin_request_in_progress": "В ход", "payjoin_request_in_progress": "В ход",
"payjoin_unavailable": "Payjoin недостъпно",
"payjoin_unavailable_sheet_content": "Получаването на Payjoin транзакция изисква да имате готови за биткойн. \\ N \\ nas скоро, когато портфейлът ви има средства, Payjoin ще бъде активиран автоматично.",
"payjoin_unavailable_sheet_title": "Защо Payjoin не е наличен?",
"payment_id": "Payment ID: ", "payment_id": "Payment ID: ",
"payment_was_received": "Плащането бе получено.", "payment_was_received": "Плащането бе получено.",
"pending": " (чакащи)", "pending": " (чакащи)",
@ -1071,4 +1077,4 @@
"you_will_send": "Обръщане от", "you_will_send": "Обръщане от",
"youCanGoBackToYourDapp": "Можете да се върнете при вашия Dapp сега", "youCanGoBackToYourDapp": "Можете да се върнете при вашия Dapp сега",
"yy": "гг" "yy": "гг"
} }

View file

@ -548,10 +548,16 @@
"password": "Heslo", "password": "Heslo",
"paste": "Vložit", "paste": "Vložit",
"pause_wallet_creation": "Možnost vytvářet Haven Wallet je momentálně pozastavena.", "pause_wallet_creation": "Možnost vytvářet Haven Wallet je momentálně pozastavena.",
"payjoin_card_content": "Payjoin je nová funkce ochrany soukromí a úspory poplatků v bitcoinech.",
"payjoin_details": "%%TE podrobnosti", "payjoin_details": "%%TE podrobnosti",
"payjoin_enabled": "Payjoin povoleno", "payjoin_enabled": "Payjoin povoleno",
"payjoin_enabling_popup_content": "Můžete přepínat Payjoin v nabídce → Ochrana osobních údajů → Použít Payjoin, abyste jej povolili později.",
"payjoin_enabling_popup_title": "Povolení Payjoin",
"payjoin_request_awaiting_tx": "Čeká na transakci", "payjoin_request_awaiting_tx": "Čeká na transakci",
"payjoin_request_in_progress": "Probíhá", "payjoin_request_in_progress": "Probíhá",
"payjoin_unavailable": "Payjoin nedostupné",
"payjoin_unavailable_sheet_content": "Přijetí transakce Payjoin vyžaduje, abyste měli bitcoin připraveni k použití. \\ N \\ NAS, jakmile má vaše peněženka finanční prostředky, Payjoin bude automaticky povoleno.",
"payjoin_unavailable_sheet_title": "Proč je Payjoin nedostupný?",
"payment_id": "ID platby: ", "payment_id": "ID platby: ",
"payment_was_received": "Vaše platba byla přijata.", "payment_was_received": "Vaše platba byla přijata.",
"pending": " (čeká)", "pending": " (čeká)",
@ -1071,4 +1077,4 @@
"you_will_send": "Směnit z", "you_will_send": "Směnit z",
"youCanGoBackToYourDapp": "Nyní se můžete vrátit do svého dappu", "youCanGoBackToYourDapp": "Nyní se můžete vrátit do svého dappu",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "Passwort", "password": "Passwort",
"paste": "Einfügen", "paste": "Einfügen",
"pause_wallet_creation": "Die Möglichkeit, Haven Wallet zu erstellen, ist derzeit pausiert.", "pause_wallet_creation": "Die Möglichkeit, Haven Wallet zu erstellen, ist derzeit pausiert.",
"payjoin_card_content": "Payjoin ist eine neue Feature für Privatsphäre und Gebühren in Bitcoin.",
"payjoin_details": "Payjoin Details", "payjoin_details": "Payjoin Details",
"payjoin_enabled": "Payjoin aktiv", "payjoin_enabled": "Payjoin aktiv",
"payjoin_enabling_popup_content": "Sie können Payjoin unter dem Menü → Privatsphäre → Payjoin verwenden, um es später zu aktivieren oder zu deaktivieren.",
"payjoin_enabling_popup_title": "Aktiviere Payjoin",
"payjoin_request_awaiting_tx": "Warten auf die Transaktion", "payjoin_request_awaiting_tx": "Warten auf die Transaktion",
"payjoin_request_in_progress": "Im Gange", "payjoin_request_in_progress": "Im Gange",
"payjoin_unavailable": "Payjoin nicht verfügbar",
"payjoin_unavailable_sheet_content": "Wenn Sie eine Payjoin-Transaktion erhalten, müssen Sie bereits Bitcoin im Wallet haben.",
"payjoin_unavailable_sheet_title": "Warum ist Payjoin nicht verfügbar?",
"payment_id": "Zahlungs-ID: ", "payment_id": "Zahlungs-ID: ",
"payment_was_received": "Ihre Zahlung ist eingegangen.", "payment_was_received": "Ihre Zahlung ist eingegangen.",
"pending": " (ausstehend)", "pending": " (ausstehend)",
@ -1074,4 +1080,4 @@
"you_will_send": "Konvertieren von", "you_will_send": "Konvertieren von",
"youCanGoBackToYourDapp": "Sie können jetzt zu Ihrem Dapp zurückkehren", "youCanGoBackToYourDapp": "Sie können jetzt zu Ihrem Dapp zurückkehren",
"yy": "YY" "yy": "YY"
} }

View file

@ -549,10 +549,16 @@
"password": "Password", "password": "Password",
"paste": "Paste", "paste": "Paste",
"pause_wallet_creation": "Ability to create Haven Wallet is currently paused.", "pause_wallet_creation": "Ability to create Haven Wallet is currently paused.",
"payjoin_card_content": "Payjoin is a new privacy-preserving and fee-saving feature in Bitcoin.",
"payjoin_details": "Payjoin details", "payjoin_details": "Payjoin details",
"payjoin_enabled": "Payjoin enabled", "payjoin_enabled": "Payjoin enabled",
"payjoin_enabling_popup_content": "You can toggle Payjoin under Menu → Privacy → Use Payjoin to enable or disable it later.",
"payjoin_enabling_popup_title": "Enabling Payjoin",
"payjoin_request_awaiting_tx": "Awaiting Transaction", "payjoin_request_awaiting_tx": "Awaiting Transaction",
"payjoin_request_in_progress": "In Progress", "payjoin_request_in_progress": "In Progress",
"payjoin_unavailable": "Payjoin unavailable",
"payjoin_unavailable_sheet_content": "Receiving a Payjoin transaction requires you to have Bitcoin ready to use.\n\nAs soon as your wallet has funds, Payjoin will be automatically enabled.",
"payjoin_unavailable_sheet_title": "Why is Payjoin unavailable?",
"payment_id": "Payment ID: ", "payment_id": "Payment ID: ",
"payment_was_received": "Your payment was received.", "payment_was_received": "Your payment was received.",
"pending": " (pending)", "pending": " (pending)",
@ -1072,4 +1078,4 @@
"you_will_send": "Convert from", "you_will_send": "Convert from",
"youCanGoBackToYourDapp": "You can go back to your dApp now", "youCanGoBackToYourDapp": "You can go back to your dApp now",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "Contraseña", "password": "Contraseña",
"paste": "Pegar", "paste": "Pegar",
"pause_wallet_creation": "La capacidad para crear Haven Wallet está actualmente pausada.", "pause_wallet_creation": "La capacidad para crear Haven Wallet está actualmente pausada.",
"payjoin_card_content": "Payjoin es una nueva función de preservación de la privacidad y ahorro de tarifas en Bitcoin.",
"payjoin_details": "Payjoin detalles", "payjoin_details": "Payjoin detalles",
"payjoin_enabled": "Payjoin activado", "payjoin_enabled": "Payjoin activado",
"payjoin_enabling_popup_content": "Puede alternar Payjoin en menú → privacidad → usar Payjoin para habilitarlo o deshabilitarlo más tarde.",
"payjoin_enabling_popup_title": "Habilitando Payjoin",
"payjoin_request_awaiting_tx": "Esperando transacción", "payjoin_request_awaiting_tx": "Esperando transacción",
"payjoin_request_in_progress": "En curso", "payjoin_request_in_progress": "En curso",
"payjoin_unavailable": "Payjoin no disponible",
"payjoin_unavailable_sheet_content": "Recibir una transacción Payjoin requiere que tenga Bitcoin listo para usar. \\ N \\ nas pronto como su billetera tenga fondos, Payjoin estará habilitado automáticamente.",
"payjoin_unavailable_sheet_title": "¿Por qué no está disponible Payjoin?",
"payment_id": "ID de pago: ", "payment_id": "ID de pago: ",
"payment_was_received": "Su pago fue recibido.", "payment_was_received": "Su pago fue recibido.",
"pending": " (pendiente)", "pending": " (pendiente)",
@ -1072,4 +1078,4 @@
"you_will_send": "Convertir de", "you_will_send": "Convertir de",
"youCanGoBackToYourDapp": "Puedes volver a tu dapp ahora", "youCanGoBackToYourDapp": "Puedes volver a tu dapp ahora",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "Mot de passe", "password": "Mot de passe",
"paste": "Coller", "paste": "Coller",
"pause_wallet_creation": "La possibilité de créer Haven Wallet est actuellement suspendue.", "pause_wallet_creation": "La possibilité de créer Haven Wallet est actuellement suspendue.",
"payjoin_card_content": "Payjoin est une nouvelle fonctionnalité de préservation de la confidentialité et d'économie de frais dans Bitcoin.",
"payjoin_details": "Payjoin détails", "payjoin_details": "Payjoin détails",
"payjoin_enabled": "Payjoin activé", "payjoin_enabled": "Payjoin activé",
"payjoin_enabling_popup_content": "Vous pouvez basculer Payjoin sous le menu → Confidentialité → Utiliser Payjoin pour l'activer ou le désactiver plus tard.",
"payjoin_enabling_popup_title": "Activer Payjoin",
"payjoin_request_awaiting_tx": "En attente de transaction", "payjoin_request_awaiting_tx": "En attente de transaction",
"payjoin_request_in_progress": "En cours", "payjoin_request_in_progress": "En cours",
"payjoin_unavailable": "Payjoin indisponible",
"payjoin_unavailable_sheet_content": "La réception d'une transaction Payjoin vous oblige à avoir un bitcoin prêt à l'emploi. \\ N \\ nas dès que votre portefeuille a des fonds, Payjoin sera automatiquement activé.",
"payjoin_unavailable_sheet_title": "Pourquoi Payjoin n'est-il pas disponible?",
"payment_id": "ID de Paiement : ", "payment_id": "ID de Paiement : ",
"payment_was_received": "Votre paiement a été reçu.", "payment_was_received": "Votre paiement a été reçu.",
"pending": " (en attente)", "pending": " (en attente)",
@ -1071,4 +1077,4 @@
"you_will_send": "Convertir depuis", "you_will_send": "Convertir depuis",
"youCanGoBackToYourDapp": "Vous pouvez retourner à votre Dapp maintenant", "youCanGoBackToYourDapp": "Vous pouvez retourner à votre Dapp maintenant",
"yy": "AA" "yy": "AA"
} }

View file

@ -550,10 +550,16 @@
"password": "Kalmar wucewa", "password": "Kalmar wucewa",
"paste": "Manna", "paste": "Manna",
"pause_wallet_creation": "A halin yanzu an dakatar da ikon ƙirƙirar Haven Wallet.", "pause_wallet_creation": "A halin yanzu an dakatar da ikon ƙirƙirar Haven Wallet.",
"payjoin_card_content": "Payjoin Shin sabon salo ne da adana sirri da biyan kuɗi a cikin Bitcoin.",
"payjoin_details": "Payjoin LIT LOCEC LOcciya", "payjoin_details": "Payjoin LIT LOCEC LOcciya",
"payjoin_enabled": "Payjoin An kunna", "payjoin_enabled": "Payjoin An kunna",
"payjoin_enabling_popup_content": "Kuna iya juyawa Payjoin a ƙarƙashin menu → Sirrin Sirri → Amfani Payjoin don kunna ko musaki shi daga baya.",
"payjoin_enabling_popup_title": "Samu Payjoin",
"payjoin_request_awaiting_tx": "Jiran ma'amala", "payjoin_request_awaiting_tx": "Jiran ma'amala",
"payjoin_request_in_progress": "Ana kai", "payjoin_request_in_progress": "Ana kai",
"payjoin_unavailable": "Payjoin Babu",
"payjoin_unavailable_sheet_content": "Karɓar A Payjoin Ma'amala yana buƙatar ku sami Bitcoin shirye don amfani. \\ N \\ n5 da zaran kamar walat ɗinku yana da kuɗi, Payjoin za'a kunna ta atomatik.",
"payjoin_unavailable_sheet_title": "Me yasa Payjoin rasaa?",
"payment_id": "ID na biyan kuɗi:", "payment_id": "ID na biyan kuɗi:",
"payment_was_received": "An karɓi kuɗin ku.", "payment_was_received": "An karɓi kuɗin ku.",
"pending": "(pending)", "pending": "(pending)",
@ -1073,4 +1079,4 @@
"you_will_send": "Maida daga", "you_will_send": "Maida daga",
"youCanGoBackToYourDapp": "Kuna iya komawa zuwa DPP ɗinku yanzu", "youCanGoBackToYourDapp": "Kuna iya komawa zuwa DPP ɗinku yanzu",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,13 +548,19 @@
"password": "पारण शब्द", "password": "पारण शब्द",
"paste": "पेस्ट करें", "paste": "पेस्ट करें",
"pause_wallet_creation": "हेवन वॉलेट बनाने की क्षमता फिलहाल रुकी हुई है।", "pause_wallet_creation": "हेवन वॉलेट बनाने की क्षमता फिलहाल रुकी हुई है।",
"payjoin_card_content": "Payjoin बिटकॉइन में एक नई गोपनीयता-संरक्षण और शुल्क-बचत सुविधा है।",
"payjoin_details": "Payjoin विवरण", "payjoin_details": "Payjoin विवरण",
"payjoin_enabled": "Payjoin सक्षम", "payjoin_enabled": "Payjoin सक्षम",
"payjoin_enabling_popup_content": "आप मेनू → गोपनीयता → के तहत Payjoin टॉगल कर सकते हैं → बाद में इसे सक्षम या अक्षम करने के लिए Payjoin का उपयोग करें।",
"payjoin_enabling_popup_title": "सक्षम Payjoin",
"payjoin_request_awaiting_tx": "लेन -देन का इंतजार", "payjoin_request_awaiting_tx": "लेन -देन का इंतजार",
"payjoin_request_in_progress": "प्रगति पर है", "payjoin_request_in_progress": "प्रगति पर है",
"payjoin_unavailable": "Payjoin अनुपलब्ध",
"payjoin_unavailable_sheet_content": "Payjoin लेन -देन प्राप्त करने के लिए आपको बिटकॉइन का उपयोग करने के लिए तैयार होना आवश्यक है। जैसे ही आपके वॉलेट में धन है, \\ n \\ nas, Payjoin स्वचालित रूप से सक्षम हो जाएगा।",
"payjoin_unavailable_sheet_title": "Payjoin अनुपलब्ध क्यों है?",
"payment_id": "भुगतान ID: ", "payment_id": "भुगतान ID: ",
"Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
"payment_was_received": "आपका भुगतान प्राप्त हुआ था।", "payment_was_received": "आपका भुगतान प्राप्त हुआ था।",
"Payment_was_received": "आपका भुगतान प्राप्त हो गया था।",
"pending": " (अपूर्ण)", "pending": " (अपूर्ण)",
"percentageOf": "${amount} का", "percentageOf": "${amount} का",
"pin_at_top": "शीर्ष पर ${token} पिन करें", "pin_at_top": "शीर्ष पर ${token} पिन करें",
@ -1073,4 +1079,4 @@
"you_will_send": "से रूपांतरित करें", "you_will_send": "से रूपांतरित करें",
"youCanGoBackToYourDapp": "अब आप अपने DAPP पर वापस जा सकते हैं", "youCanGoBackToYourDapp": "अब आप अपने DAPP पर वापस जा सकते हैं",
"yy": "वाईवाई" "yy": "वाईवाई"
} }

View file

@ -548,10 +548,16 @@
"password": "Lozinka", "password": "Lozinka",
"paste": "Zalijepi", "paste": "Zalijepi",
"pause_wallet_creation": "Mogućnost stvaranja novčanika Haven trenutno je pauzirana.", "pause_wallet_creation": "Mogućnost stvaranja novčanika Haven trenutno je pauzirana.",
"payjoin_card_content": "Payjoin je nova značajka za čuvanje privatnosti i ušteda naknada u Bitcoin-u.",
"payjoin_details": "Payjoin Pojedinosti", "payjoin_details": "Payjoin Pojedinosti",
"payjoin_enabled": "Payjoin Omogućeno", "payjoin_enabled": "Payjoin Omogućeno",
"payjoin_enabling_popup_content": "Možete prebaciti Payjoin u izborniku → Privatnost → Koristite Payjoin da biste ga omogućili ili onemogućili kasnije.",
"payjoin_enabling_popup_title": "Omogućavanje Payjoin",
"payjoin_request_awaiting_tx": "Čekajući transakciju", "payjoin_request_awaiting_tx": "Čekajući transakciju",
"payjoin_request_in_progress": "U toku", "payjoin_request_in_progress": "U toku",
"payjoin_unavailable": "Payjoin nedostupno",
"payjoin_unavailable_sheet_content": "Primanje Payjoin Transakcije zahtijeva da Bitcoin bude spreman za upotrebu. \\ N \\ NAS čim vaš novčanik ima sredstva, Payjoin će biti automatski omogućen.",
"payjoin_unavailable_sheet_title": "Zašto je Payjoin nedostupno?",
"payment_id": "ID plaćanja: ", "payment_id": "ID plaćanja: ",
"payment_was_received": "Vaša uplata je primljena.", "payment_was_received": "Vaša uplata je primljena.",
"pending": " (u tijeku)", "pending": " (u tijeku)",
@ -1071,4 +1077,4 @@
"you_will_send": "Razmijeni iz", "you_will_send": "Razmijeni iz",
"youCanGoBackToYourDapp": "Sada se možete vratiti na svoj dapp", "youCanGoBackToYourDapp": "Sada se možete vratiti na svoj dapp",
"yy": "GG" "yy": "GG"
} }

View file

@ -547,10 +547,16 @@
"password": "Գաղտնաբառ", "password": "Գաղտնաբառ",
"paste": "Տեղադրել", "paste": "Տեղադրել",
"pause_wallet_creation": "Հնարավորություն ստեղծել Haven Դրամապանակ ընթացիկ դադարեցված է", "pause_wallet_creation": "Հնարավորություն ստեղծել Haven Դրամապանակ ընթացիկ դադարեցված է",
"payjoin_card_content": "Payjoin- ն նոր գաղտնիության պահպանման եւ վճարների պահպանման առանձնահատկություն է Bitcoin- ում:",
"payjoin_details": "Payjoin Մանրամասն", "payjoin_details": "Payjoin Մանրամասն",
"payjoin_enabled": "Payjoin միացված", "payjoin_enabled": "Payjoin միացված",
"payjoin_enabling_popup_content": "Կարող եք անցնել Payjoin ընտրացանկի ներքո → Գաղտնիության → Օգտագործեք Payjoin, միացնելու կամ անջատելու այն ավելի ուշ:",
"payjoin_enabling_popup_title": "Միացնել Payjoin",
"payjoin_request_awaiting_tx": "Սպասում է գործարքին", "payjoin_request_awaiting_tx": "Սպասում է գործարքին",
"payjoin_request_in_progress": "Ընթացքի մեջ", "payjoin_request_in_progress": "Ընթացքի մեջ",
"payjoin_unavailable": "Payjoin անհասանելի",
"payjoin_unavailable_sheet_content": "A Payjoin գործարք ստանալը պահանջում է, որ դուք պատրաստեք Bitcoin- ը պատրաստելու համար:",
"payjoin_unavailable_sheet_title": "Ինչու է Payjoin անհասանելի:",
"payment_id": "Վճարման հերթական համար", "payment_id": "Վճարման հերթական համար",
"payment_was_received": "Վճարումը ստացված է", "payment_was_received": "Վճարումը ստացված է",
"pending": " (մշակվում է)", "pending": " (մշակվում է)",
@ -1069,4 +1075,4 @@
"you_will_send": "Փոխանակեք", "you_will_send": "Փոխանակեք",
"youCanGoBackToYourDapp": "Այժմ կարող եք վերադառնալ ձեր DAPP- ին", "youCanGoBackToYourDapp": "Այժմ կարող եք վերադառնալ ձեր DAPP- ին",
"yy": "ՏՏ" "yy": "ՏՏ"
} }

View file

@ -550,10 +550,16 @@
"password": "Kata Sandi", "password": "Kata Sandi",
"paste": "Tempel", "paste": "Tempel",
"pause_wallet_creation": "Kemampuan untuk membuat Haven Wallet saat ini dijeda.", "pause_wallet_creation": "Kemampuan untuk membuat Haven Wallet saat ini dijeda.",
"payjoin_card_content": "Payjoin adalah fitur pemeliharaan privasi dan hemat biaya baru di Bitcoin.",
"payjoin_details": "Payjoin detail", "payjoin_details": "Payjoin detail",
"payjoin_enabled": "Payjoin diaktifkan", "payjoin_enabled": "Payjoin diaktifkan",
"payjoin_enabling_popup_content": "Anda dapat beralih Payjoin di bawah menu → Privasi → Gunakan Payjoin untuk mengaktifkan atau menonaktifkannya nanti.",
"payjoin_enabling_popup_title": "Mengaktifkan Payjoin",
"payjoin_request_awaiting_tx": "Menunggu transaksi", "payjoin_request_awaiting_tx": "Menunggu transaksi",
"payjoin_request_in_progress": "Sedang berlangsung", "payjoin_request_in_progress": "Sedang berlangsung",
"payjoin_unavailable": "Payjoin tidak tersedia",
"payjoin_unavailable_sheet_content": "Menerima Payjoin transaksi mengharuskan Anda untuk menyiapkan bitcoin. \\ N \\ nas segera setelah dompet Anda memiliki dana, Payjoin akan diaktifkan secara otomatis.",
"payjoin_unavailable_sheet_title": "Mengapa Payjoin tidak tersedia?",
"payment_id": "ID Pembayaran: ", "payment_id": "ID Pembayaran: ",
"payment_was_received": "Pembayaran Anda telah diterima.", "payment_was_received": "Pembayaran Anda telah diterima.",
"pending": " (pending)", "pending": " (pending)",
@ -1074,4 +1080,4 @@
"you_will_send": "Konversi dari", "you_will_send": "Konversi dari",
"youCanGoBackToYourDapp": "Anda dapat kembali ke dapp Anda sekarang", "youCanGoBackToYourDapp": "Anda dapat kembali ke dapp Anda sekarang",
"yy": "YY" "yy": "YY"
} }

View file

@ -549,10 +549,16 @@
"password": "Password", "password": "Password",
"paste": "Incolla", "paste": "Incolla",
"pause_wallet_creation": "La possibilità di creare Wallet Haven è attualmente sospesa.", "pause_wallet_creation": "La possibilità di creare Wallet Haven è attualmente sospesa.",
"payjoin_card_content": "Payjoin è una nuova funzionalità di conservazione della privacy e di risparmio di tasse in Bitcoin.",
"payjoin_details": "Payjoin dettagli", "payjoin_details": "Payjoin dettagli",
"payjoin_enabled": "Payjoin abilitato", "payjoin_enabled": "Payjoin abilitato",
"payjoin_enabling_popup_content": "È possibile attivare Payjoin sotto menu → privacy → usa Payjoin per abilitarlo o disabilitarlo in seguito.",
"payjoin_enabling_popup_title": "Abilitazione Payjoin",
"payjoin_request_awaiting_tx": "In attesa di transazione", "payjoin_request_awaiting_tx": "In attesa di transazione",
"payjoin_request_in_progress": "In corso", "payjoin_request_in_progress": "In corso",
"payjoin_unavailable": "Payjoin non disponibile",
"payjoin_unavailable_sheet_content": "La ricezione di una transazione Payjoin richiede di avere Bitcoin pronto per l'uso. \\ Ns non appena il tuo portafoglio ha fondi, Payjoin verrà automaticamente abilitato.",
"payjoin_unavailable_sheet_title": "Perché Payjoin non è disponibile?",
"payment_id": "ID Pagamento: ", "payment_id": "ID Pagamento: ",
"payment_was_received": "Il tuo pagamento è stato ricevuto.", "payment_was_received": "Il tuo pagamento è stato ricevuto.",
"pending": " (non confermati)", "pending": " (non confermati)",
@ -1073,4 +1079,4 @@
"you_will_send": "Conveti da", "you_will_send": "Conveti da",
"youCanGoBackToYourDapp": "Puoi tornare al tuo DApp ora", "youCanGoBackToYourDapp": "Puoi tornare al tuo DApp ora",
"yy": "YY" "yy": "YY"
} }

View file

@ -549,10 +549,16 @@
"password": "パスワード", "password": "パスワード",
"paste": "ペースト", "paste": "ペースト",
"pause_wallet_creation": "Haven Wallet を作成する機能は現在一時停止されています。", "pause_wallet_creation": "Haven Wallet を作成する機能は現在一時停止されています。",
"payjoin_card_content": "Payjoinは、Bitcoinの新しいプライバシーを提供し、有料の機能です。",
"payjoin_details": "Payjoin 詳細", "payjoin_details": "Payjoin 詳細",
"payjoin_enabled": "Payjoin enabled", "payjoin_enabled": "Payjoin enabled",
"payjoin_enabling_popup_content": "メニュー→[プライバシー]→[ Payjoinを使用して、後で有効または無効にすることもできます。",
"payjoin_enabling_popup_title": "Payjoinを有効にする",
"payjoin_request_awaiting_tx": "トランザクションを待っています", "payjoin_request_awaiting_tx": "トランザクションを待っています",
"payjoin_request_in_progress": "進行中", "payjoin_request_in_progress": "進行中",
"payjoin_unavailable": "Payjoin利用できません",
"payjoin_unavailable_sheet_content": "Payjoinトランザクションを受信するには、ビットコインを使用できるようにする必要があります。\\ n \\ nasのウォレットに資金があるとすぐに、 Payjoinが自動的に有効になります。",
"payjoin_unavailable_sheet_title": "Payjoinが利用できないのはなぜですか",
"payment_id": "支払いID: ", "payment_id": "支払いID: ",
"payment_was_received": "お支払いを受け取りました。", "payment_was_received": "お支払いを受け取りました。",
"pending": " (保留中)", "pending": " (保留中)",
@ -1072,4 +1078,4 @@
"you_will_send": "から変換", "you_will_send": "から変換",
"youCanGoBackToYourDapp": "あなたは今あなたのダップに戻ることができます", "youCanGoBackToYourDapp": "あなたは今あなたのダップに戻ることができます",
"yy": "YY" "yy": "YY"
} }

View file

@ -549,10 +549,16 @@
"password": "비밀번호", "password": "비밀번호",
"paste": "붙여넣기", "paste": "붙여넣기",
"pause_wallet_creation": "현재 Haven 지갑 생성 기능이 일시 중지되었습니다.", "pause_wallet_creation": "현재 Haven 지갑 생성 기능이 일시 중지되었습니다.",
"payjoin_card_content": "Payjoin는 Bitcoin의 새로운 개인 정보 보호 및 수수료 절약 기능입니다.",
"payjoin_details": "Payjoin 세부 정보", "payjoin_details": "Payjoin 세부 정보",
"payjoin_enabled": "Payjoin enabled", "payjoin_enabled": "Payjoin enabled",
"payjoin_enabling_popup_content": "메뉴 → 개인 정보 → → Payjoin를 사용하여 나중에 활성화하거나 비활성화 할 수 있습니다.",
"payjoin_enabling_popup_title": "활성화 Payjoin",
"payjoin_request_awaiting_tx": "거래를 기다리고 있습니다", "payjoin_request_awaiting_tx": "거래를 기다리고 있습니다",
"payjoin_request_in_progress": "진행 중", "payjoin_request_in_progress": "진행 중",
"payjoin_unavailable": "Payjoin Aailable",
"payjoin_unavailable_sheet_content": "Payjoin 트랜잭션을 수신하려면 비트 코인을 사용할 준비가되어 있어야합니다. \\ n \\ nas 지갑이 자금이 자금이 있으면 Payjoin가 자동으로 활성화됩니다.",
"payjoin_unavailable_sheet_title": "Payjoin를 사용할 수없는 이유는 무엇입니까?",
"payment_id": "결제 ID: ", "payment_id": "결제 ID: ",
"payment_was_received": "결제가 접수되었습니다.", "payment_was_received": "결제가 접수되었습니다.",
"pending": " (대기 중)", "pending": " (대기 중)",
@ -1072,4 +1078,4 @@
"you_will_send": "전환 출처", "you_will_send": "전환 출처",
"youCanGoBackToYourDapp": "이제 dApp으로 돌아갈 수 있습니다", "youCanGoBackToYourDapp": "이제 dApp으로 돌아갈 수 있습니다",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "စကားဝှက်", "password": "စကားဝှက်",
"paste": "ငါးပိ", "paste": "ငါးပိ",
"pause_wallet_creation": "Haven Wallet ဖန်တီးနိုင်မှုကို လောလောဆယ် ခေတ္တရပ်ထားသည်။", "pause_wallet_creation": "Haven Wallet ဖန်တီးနိုင်မှုကို လောလောဆယ် ခေတ္တရပ်ထားသည်။",
"payjoin_card_content": "Payjoin Bitcoin တွင် privacy ကိုထိန်းသိမ်းထားခြင်းနှင့်အခကြေးငွေသက်သာသည့်အင်္ဂါရပ်အသစ်တစ်ခုဖြစ်သည်။",
"payjoin_details": "Payjoin အသေးစိတ်အချက်အလက်များ %% အသေးစိတ်အချက်အလက်များ", "payjoin_details": "Payjoin အသေးစိတ်အချက်အလက်များ %% အသေးစိတ်အချက်အလက်များ",
"payjoin_enabled": "Payjoin enabled", "payjoin_enabled": "Payjoin enabled",
"payjoin_enabling_popup_content": "menu Payjoin Payjoin Payjoin Payjoin Payjoin → privacy → enable လုပ်ရန် Payjoin Payjoin ကိုသုံးပါ။",
"payjoin_enabling_popup_title": "Payjoin Payjoin enable",
"payjoin_request_awaiting_tx": "ငွေပေးငွေယူစောင့်ဆိုင်း", "payjoin_request_awaiting_tx": "ငွေပေးငွေယူစောင့်ဆိုင်း",
"payjoin_request_in_progress": "ဆောင်ရွက်ဆဲဖြစ်သည်", "payjoin_request_in_progress": "ဆောင်ရွက်ဆဲဖြစ်သည်",
"payjoin_unavailable": "Payjoin မရနိုင်သော",
"payjoin_unavailable_sheet_content": "Payjoin ငွေပေးချေမှုကိုလက်ခံရန်သင့်အား Bitcoin ကိုအသုံးပြုရန်အဆင်သင့်ဖြစ်ရန်လိုအပ်သည်။ \\ n \\ ns ပိုက်ဆံအိတ်သည်ရန်ပုံငွေများရှိပါက Payjoin သည်အလိုအလျောက်ဖွင့်ထားလိမ့်မည်။",
"payjoin_unavailable_sheet_title": "Payjoin Payjoin မရနိုင်ပါကဘာကြောင့်လဲ။",
"payment_id": "ငွေပေးချေမှု ID:", "payment_id": "ငွေပေးချေမှု ID:",
"payment_was_received": "သင့်ငွေပေးချေမှုကို လက်ခံရရှိခဲ့သည်။", "payment_was_received": "သင့်ငွေပေးချေမှုကို လက်ခံရရှိခဲ့သည်။",
"pending": " (ဆိုင်းငံ့)", "pending": " (ဆိုင်းငံ့)",
@ -1071,4 +1077,4 @@
"you_will_send": "မှပြောင်းပါ။", "you_will_send": "မှပြောင်းပါ။",
"youCanGoBackToYourDapp": "သငျသညျယခုသင်၏ dapp ကိုပြန်သွားနိုင်ပါတယ်", "youCanGoBackToYourDapp": "သငျသညျယခုသင်၏ dapp ကိုပြန်သွားနိုင်ပါတယ်",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "Wachtwoord", "password": "Wachtwoord",
"paste": "Plakken", "paste": "Plakken",
"pause_wallet_creation": "De mogelijkheid om Haven Wallet te maken is momenteel onderbroken.", "pause_wallet_creation": "De mogelijkheid om Haven Wallet te maken is momenteel onderbroken.",
"payjoin_card_content": "Payjoin is een nieuwe functie voor privacybehoud en fee-sparende functie in Bitcoin.",
"payjoin_details": "Payjoin details", "payjoin_details": "Payjoin details",
"payjoin_enabled": "Payjoin ingeschakeld", "payjoin_enabled": "Payjoin ingeschakeld",
"payjoin_enabling_popup_content": "U kunt Payjoin onder menu → privacy → Privacy → gebruiken Payjoin om het later in te schakelen of uit te schakelen.",
"payjoin_enabling_popup_title": "Payjoin Inschakelen",
"payjoin_request_awaiting_tx": "In afwachting van transactie", "payjoin_request_awaiting_tx": "In afwachting van transactie",
"payjoin_request_in_progress": "In uitvoering", "payjoin_request_in_progress": "In uitvoering",
"payjoin_unavailable": "Payjoin niet beschikbaar",
"payjoin_unavailable_sheet_content": "Het ontvangen van een Payjoin -transactie vereist dat u Bitcoin klaar hebt om te gebruiken. \\ N \\ NAS Zodra uw portemonnee geld heeft, wordt Payjoin automatisch ingeschakeld.",
"payjoin_unavailable_sheet_title": "Waarom is Payjoin niet beschikbaar?",
"payment_id": "Betaling ID: ", "payment_id": "Betaling ID: ",
"payment_was_received": "Uw betaling is ontvangen.", "payment_was_received": "Uw betaling is ontvangen.",
"pending": " (in afwachting)", "pending": " (in afwachting)",
@ -1072,4 +1078,4 @@
"you_will_send": "Converteren van", "you_will_send": "Converteren van",
"youCanGoBackToYourDapp": "U kunt nu terug naar uw DApp gaan", "youCanGoBackToYourDapp": "U kunt nu terug naar uw DApp gaan",
"yy": "JJ" "yy": "JJ"
} }

View file

@ -548,10 +548,16 @@
"password": "Hasło", "password": "Hasło",
"paste": "Wklej", "paste": "Wklej",
"pause_wallet_creation": "Możliwość utworzenia Portfela Haven jest obecnie wstrzymana.", "pause_wallet_creation": "Możliwość utworzenia Portfela Haven jest obecnie wstrzymana.",
"payjoin_card_content": "Payjoin to nowa funkcja wymagająca prywatności i oszczędzania opłat w Bitcoin.",
"payjoin_details": "Szczegóły Payjoin", "payjoin_details": "Szczegóły Payjoin",
"payjoin_enabled": "Payjoin włączony", "payjoin_enabled": "Payjoin włączony",
"payjoin_enabling_popup_content": "Możesz przełączać Payjoin w menu → Prywatność → Użyj Payjoin, aby włączyć lub wyłączyć później.",
"payjoin_enabling_popup_title": "Włączanie Payjoin",
"payjoin_request_awaiting_tx": "Oczekiwanie na transakcję", "payjoin_request_awaiting_tx": "Oczekiwanie na transakcję",
"payjoin_request_in_progress": "W toku", "payjoin_request_in_progress": "W toku",
"payjoin_unavailable": "Payjoin niedostępny",
"payjoin_unavailable_sheet_content": "Otrzymanie transakcji Payjoin wymaga przygotowania Bitcoin do użycia. \\ N \\ NAS, ponieważ portfel ma fundusze, Payjoin zostanie automatycznie włączony.",
"payjoin_unavailable_sheet_title": "Dlaczego Payjoin jest niedostępny?",
"payment_id": "ID Płatności: ", "payment_id": "ID Płatności: ",
"payment_was_received": "Twoja płatność została otrzymana.", "payment_was_received": "Twoja płatność została otrzymana.",
"pending": " (w oczekiwaniu)", "pending": " (w oczekiwaniu)",
@ -1071,4 +1077,4 @@
"you_will_send": "Konwertuj z", "you_will_send": "Konwertuj z",
"youCanGoBackToYourDapp": "Możesz teraz wrócić do swojego dapp", "youCanGoBackToYourDapp": "Możesz teraz wrócić do swojego dapp",
"yy": "RR" "yy": "RR"
} }

View file

@ -550,10 +550,16 @@
"password": "Senha", "password": "Senha",
"paste": "Colar", "paste": "Colar",
"pause_wallet_creation": "A capacidade de criar a Haven Wallet está atualmente pausada.", "pause_wallet_creation": "A capacidade de criar a Haven Wallet está atualmente pausada.",
"payjoin_card_content": "Payjoin é um novo recurso de preservação de privacidade e economia de taxas no Bitcoin.",
"payjoin_details": "Payjoin detalhes", "payjoin_details": "Payjoin detalhes",
"payjoin_enabled": "Payjoin habilitado", "payjoin_enabled": "Payjoin habilitado",
"payjoin_enabling_popup_content": "Você pode alternar Payjoin em Menu → Privacidade → Use Payjoin para habilitá -lo ou desativá -lo posteriormente.",
"payjoin_enabling_popup_title": "Habilitando Payjoin",
"payjoin_request_awaiting_tx": "Aguardando transação", "payjoin_request_awaiting_tx": "Aguardando transação",
"payjoin_request_in_progress": "Em andamento", "payjoin_request_in_progress": "Em andamento",
"payjoin_unavailable": "Payjoin indisponível",
"payjoin_unavailable_sheet_content": "O recebimento de uma transação Payjoin exige que você tenha o Bitcoin pronto para uso. \\ N \\ nas assim que sua carteira tiver fundos, Payjoin será ativado automaticamente.",
"payjoin_unavailable_sheet_title": "Por que Payjoin não está disponível?",
"payment_id": "ID de pagamento: ", "payment_id": "ID de pagamento: ",
"payment_was_received": "Seu pagamento foi recebido.", "payment_was_received": "Seu pagamento foi recebido.",
"pending": " (pendente)", "pending": " (pendente)",
@ -1074,4 +1080,4 @@
"you_will_send": "Converter de", "you_will_send": "Converter de",
"youCanGoBackToYourDapp": "Você pode voltar para o seu dapp agora", "youCanGoBackToYourDapp": "Você pode voltar para o seu dapp agora",
"yy": "aa" "yy": "aa"
} }

View file

@ -549,10 +549,16 @@
"password": "Пароль", "password": "Пароль",
"paste": "Вставить", "paste": "Вставить",
"pause_wallet_creation": "Возможность создания Haven Wallet в настоящее время приостановлена.", "pause_wallet_creation": "Возможность создания Haven Wallet в настоящее время приостановлена.",
"payjoin_card_content": "Payjoin-новая функция, поддерживающая конфиденциальность и сборы в биткойнах.",
"payjoin_details": "Payjoin подробности", "payjoin_details": "Payjoin подробности",
"payjoin_enabled": "Payjoin включено", "payjoin_enabled": "Payjoin включено",
"payjoin_enabling_popup_content": "Вы можете переключить Payjoin в меню → конфиденциальность → использовать Payjoin, чтобы включить или отключить его позже.",
"payjoin_enabling_popup_title": "Включение Payjoin",
"payjoin_request_awaiting_tx": "В ожидании транзакции", "payjoin_request_awaiting_tx": "В ожидании транзакции",
"payjoin_request_in_progress": "В ходе выполнения", "payjoin_request_in_progress": "В ходе выполнения",
"payjoin_unavailable": "Payjoin недоступен",
"payjoin_unavailable_sheet_content": "Получение транзакции Payjoin требует, чтобы вы готовили биткойн для использования. \\ N \\ Nas, как только ваш кошелек получит средства, Payjoin будет автоматически включен.",
"payjoin_unavailable_sheet_title": "Почему Payjoin недоступен?",
"payment_id": "ID платежа: ", "payment_id": "ID платежа: ",
"payment_was_received": "Ваш платеж получен.", "payment_was_received": "Ваш платеж получен.",
"pending": " (в ожидании)", "pending": " (в ожидании)",
@ -1072,4 +1078,4 @@
"you_will_send": "Конвертировать из", "you_will_send": "Конвертировать из",
"youCanGoBackToYourDapp": "Вы можете вернуться к своему даппу сейчас", "youCanGoBackToYourDapp": "Вы можете вернуться к своему даппу сейчас",
"yy": "ГГ" "yy": "ГГ"
} }

View file

@ -548,10 +548,16 @@
"password": "รหัสผ่าน", "password": "รหัสผ่าน",
"paste": "วาง", "paste": "วาง",
"pause_wallet_creation": "ขณะนี้ความสามารถในการสร้าง Haven Wallet ถูกหยุดชั่วคราว", "pause_wallet_creation": "ขณะนี้ความสามารถในการสร้าง Haven Wallet ถูกหยุดชั่วคราว",
"payjoin_card_content": "Payjoin เป็นฟีเจอร์การประหยัดความเป็นส่วนตัวและการประหยัดค่าธรรมเนียมใหม่ใน Bitcoin",
"payjoin_details": "Payjoin รายละเอียด", "payjoin_details": "Payjoin รายละเอียด",
"payjoin_enabled": "Payjoin เปิดใช้งาน", "payjoin_enabled": "Payjoin เปิดใช้งาน",
"payjoin_enabling_popup_content": "คุณสามารถสลับ Payjoin ภายใต้เมนู→ความเป็นส่วนตัว→ใช้ Payjoin เพื่อเปิดใช้งานหรือปิดการใช้งานในภายหลัง",
"payjoin_enabling_popup_title": "เปิดใช้งาน Payjoin",
"payjoin_request_awaiting_tx": "รอธุรกรรม", "payjoin_request_awaiting_tx": "รอธุรกรรม",
"payjoin_request_in_progress": "การดำเนินการ", "payjoin_request_in_progress": "การดำเนินการ",
"payjoin_unavailable": "Payjoin ไม่พร้อมใช้งาน",
"payjoin_unavailable_sheet_content": "การรับธุรกรรม Payjoin จะต้องให้คุณมี Bitcoin พร้อมใช้งาน \\ n \\ nas เร็ว ๆ นี้เนื่องจากกระเป๋าเงินของคุณมีเงินทุน Payjoin จะเปิดใช้งานโดยอัตโนมัติ",
"payjoin_unavailable_sheet_title": "ทำไม Payjoin ไม่พร้อมใช้งาน?",
"payment_id": "ID การชำระเงิน: ", "payment_id": "ID การชำระเงิน: ",
"payment_was_received": "การชำระเงินของคุณได้รับการรับทราบแล้ว", "payment_was_received": "การชำระเงินของคุณได้รับการรับทราบแล้ว",
"pending": " (อยู่ระหว่างดำเนินการ)", "pending": " (อยู่ระหว่างดำเนินการ)",
@ -1071,4 +1077,4 @@
"you_will_send": "แปลงจาก", "you_will_send": "แปลงจาก",
"youCanGoBackToYourDapp": "คุณสามารถกลับไปที่ dapp ของคุณได้ทันที", "youCanGoBackToYourDapp": "คุณสามารถกลับไปที่ dapp ของคุณได้ทันที",
"yy": "ปี" "yy": "ปี"
} }

View file

@ -548,10 +548,16 @@
"password": "Password", "password": "Password",
"paste": "I-paste", "paste": "I-paste",
"pause_wallet_creation": "Kasalukuyang naka-pause ang kakayahang gumawa ng Haven Wallet.", "pause_wallet_creation": "Kasalukuyang naka-pause ang kakayahang gumawa ng Haven Wallet.",
"payjoin_card_content": "Payjoin ay isang bagong tampok na privacy-pag-iingat at pag-save ng bayad sa Bitcoin.",
"payjoin_details": "Mga detalye ng Payjoin", "payjoin_details": "Mga detalye ng Payjoin",
"payjoin_enabled": "Payjoin pinagana", "payjoin_enabled": "Payjoin pinagana",
"payjoin_enabling_popup_content": "Maaari mong i -toggle Payjoin sa ilalim ng menu → privacy → gumamit ng Payjoin upang paganahin o huwag paganahin ito sa ibang pagkakataon.",
"payjoin_enabling_popup_title": "Pagpapagana Payjoin",
"payjoin_request_awaiting_tx": "Naghihintay ng transaksyon", "payjoin_request_awaiting_tx": "Naghihintay ng transaksyon",
"payjoin_request_in_progress": "Sa pag -unlad", "payjoin_request_in_progress": "Sa pag -unlad",
"payjoin_unavailable": "Payjoin hindi magagamit",
"payjoin_unavailable_sheet_content": "Ang pagtanggap ng isang Payjoin transaksyon ay nangangailangan sa iyo na handa nang gamitin ang bitcoin.",
"payjoin_unavailable_sheet_title": "Bakit hindi magagamit ang Payjoin?",
"payment_id": "Payment ID: ", "payment_id": "Payment ID: ",
"payment_was_received": "Natanggap ang iyong bayad.", "payment_was_received": "Natanggap ang iyong bayad.",
"pending": "(hindi pa tapos)", "pending": "(hindi pa tapos)",
@ -1071,4 +1077,4 @@
"you_will_send": "I-convert mula sa", "you_will_send": "I-convert mula sa",
"youCanGoBackToYourDapp": "Maaari kang bumalik sa iyong dapp ngayon", "youCanGoBackToYourDapp": "Maaari kang bumalik sa iyong dapp ngayon",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "Parola", "password": "Parola",
"paste": "Yapıştır", "paste": "Yapıştır",
"pause_wallet_creation": "Haven Cüzdanı oluşturma yeteneği şu anda duraklatıldı.", "pause_wallet_creation": "Haven Cüzdanı oluşturma yeteneği şu anda duraklatıldı.",
"payjoin_card_content": "Payjoin, Bitcoin'de yeni bir gizliliği koruyan ve ücret tasarrufu sağlayan bir özelliktir.",
"payjoin_details": "Payjoin detaylar", "payjoin_details": "Payjoin detaylar",
"payjoin_enabled": "Payjoin etkinleştirilmiş", "payjoin_enabled": "Payjoin etkinleştirilmiş",
"payjoin_enabling_popup_content": "Daha sonra etkinleştirmek veya devre dışı bırakmak için Menü → Gizlilik → Kullanın Payjoin kullanabilirsiniz.",
"payjoin_enabling_popup_title": "Etkinleştirme Payjoin",
"payjoin_request_awaiting_tx": "İşlem bekliyor", "payjoin_request_awaiting_tx": "İşlem bekliyor",
"payjoin_request_in_progress": "Devam etmekte", "payjoin_request_in_progress": "Devam etmekte",
"payjoin_unavailable": "Payjoin mevcut değil",
"payjoin_unavailable_sheet_content": "Bir Payjoin işlem almak, Bitcoin kullanıma hazır olmanızı gerektirir. \\ N \\ nas Cüzdanınızın fonları olduğu anda Payjoin otomatik olarak etkinleştirilir.",
"payjoin_unavailable_sheet_title": "Payjoin Neden mevcut değil?",
"payment_id": "Ödeme ID'si: ", "payment_id": "Ödeme ID'si: ",
"payment_was_received": "Ödemeniz alındı.", "payment_was_received": "Ödemeniz alındı.",
"pending": " (bekleyen)", "pending": " (bekleyen)",
@ -1071,4 +1077,4 @@
"you_will_send": "Biçiminden dönüştür:", "you_will_send": "Biçiminden dönüştür:",
"youCanGoBackToYourDapp": "Şimdi Dapp'ınıza geri dönebilirsin", "youCanGoBackToYourDapp": "Şimdi Dapp'ınıza geri dönebilirsin",
"yy": "YY" "yy": "YY"
} }

View file

@ -548,10 +548,16 @@
"password": "Пароль", "password": "Пароль",
"paste": "Вставити", "paste": "Вставити",
"pause_wallet_creation": "Можливість створення гаманця Haven зараз призупинено.", "pause_wallet_creation": "Можливість створення гаманця Haven зараз призупинено.",
"payjoin_card_content": "Payjoin-це нова функція збереження конфіденційності та економії плати в Bitcoin.",
"payjoin_details": "Payjoin деталей", "payjoin_details": "Payjoin деталей",
"payjoin_enabled": "Payjoin увімкнено", "payjoin_enabled": "Payjoin увімкнено",
"payjoin_enabling_popup_content": "Ви можете перемикатися Payjoin в меню → конфіденційність → використовувати Payjoin, щоб увімкнути або відключити його пізніше.",
"payjoin_enabling_popup_title": "Увімкнення Payjoin",
"payjoin_request_awaiting_tx": "Чекає транзакції", "payjoin_request_awaiting_tx": "Чекає транзакції",
"payjoin_request_in_progress": "Триває", "payjoin_request_in_progress": "Триває",
"payjoin_unavailable": "Payjoin недоступний",
"payjoin_unavailable_sheet_content": "Отримання транзакції Payjoin вимагає, щоб ви біткойн готували до використання.",
"payjoin_unavailable_sheet_title": "Чому Payjoin недоступний?",
"payment_id": "ID платежу: ", "payment_id": "ID платежу: ",
"payment_was_received": "Ваш платіж отримано.", "payment_was_received": "Ваш платіж отримано.",
"pending": " (в очікуванні)", "pending": " (в очікуванні)",
@ -1072,4 +1078,4 @@
"you_will_send": "Конвертувати з", "you_will_send": "Конвертувати з",
"youCanGoBackToYourDapp": "Ви можете повернутися до свого DAPP зараз", "youCanGoBackToYourDapp": "Ви можете повернутися до свого DAPP зараз",
"yy": "YY" "yy": "YY"
} }

View file

@ -550,10 +550,16 @@
"password": "پاس ورڈ", "password": "پاس ورڈ",
"paste": "چسپاں کریں۔", "paste": "چسپاں کریں۔",
"pause_wallet_creation": "Haven Wallet ۔ﮯﮨ ﻑﻮﻗﻮﻣ ﻝﺎﺤﻟﺍ ﯽﻓ ﺖﯿﻠﮨﺍ ﯽﮐ ﮯﻧﺎﻨﺑ", "pause_wallet_creation": "Haven Wallet ۔ﮯﮨ ﻑﻮﻗﻮﻣ ﻝﺎﺤﻟﺍ ﯽﻓ ﺖﯿﻠﮨﺍ ﯽﮐ ﮯﻧﺎﻨﺑ",
"payjoin_card_content": "Payjoin بٹ کوائن میں پرائیویسی کو محفوظ رکھنے اور فیس بچانے کی ایک نئی خصوصیت ہے۔",
"payjoin_details": "Payjoin تفصیلات", "payjoin_details": "Payjoin تفصیلات",
"payjoin_enabled": "Payjoin فعال", "payjoin_enabled": "Payjoin فعال",
"payjoin_enabling_popup_content": "آپ Payjoin مینو → پرائیویسی → Payjoin Payjoin Payjoin کو بعد میں فعال کرنے یا غیر فعال کرنے کے لئے Payjoin Payjoin کا استعمال کریں۔",
"payjoin_enabling_popup_title": "Payjoin کو چالو کرنا",
"payjoin_request_awaiting_tx": "لین دین کے منتظر", "payjoin_request_awaiting_tx": "لین دین کے منتظر",
"payjoin_request_in_progress": "پیشرفت میں", "payjoin_request_in_progress": "پیشرفت میں",
"payjoin_unavailable": "Payjoin دستیاب نہیں",
"payjoin_unavailable_sheet_content": "Payjoin ٹرانزیکشن وصول کرنے کے ل you آپ کو بٹ کوائن کو استعمال کرنے کے لئے تیار کرنے کی ضرورت ہوتی ہے۔ \\ n \\ nas جیسے ہی آپ کے بٹوے میں فنڈز ہوں گے ، Payjoin خود بخود فعال ہوجائیں گے۔",
"payjoin_unavailable_sheet_title": "Payjoin دستیاب کیوں نہیں ہے؟",
"payment_id": "ادائیگی کی شناخت:", "payment_id": "ادائیگی کی شناخت:",
"payment_was_received": "آپ کی ادائیگی موصول ہو گئی۔", "payment_was_received": "آپ کی ادائیگی موصول ہو گئی۔",
"pending": " (زیر التواء)", "pending": " (زیر التواء)",
@ -1073,4 +1079,4 @@
"you_will_send": "سے تبدیل کریں۔", "you_will_send": "سے تبدیل کریں۔",
"youCanGoBackToYourDapp": "اب آپ اپنے ڈی اے پی پی پر واپس جاسکتے ہیں", "youCanGoBackToYourDapp": "اب آپ اپنے ڈی اے پی پی پر واپس جاسکتے ہیں",
"yy": "YY" "yy": "YY"
} }

View file

@ -546,10 +546,16 @@
"password": "Mật khẩu", "password": "Mật khẩu",
"paste": "Dán", "paste": "Dán",
"pause_wallet_creation": "Khả năng tạo ví Haven hiện đang bị tạm dừng.", "pause_wallet_creation": "Khả năng tạo ví Haven hiện đang bị tạm dừng.",
"payjoin_card_content": "Payjoin là một tính năng bảo tồn quyền riêng tư mới và tiết kiệm phí trong Bitcoin.",
"payjoin_details": "Payjoin chi tiết", "payjoin_details": "Payjoin chi tiết",
"payjoin_enabled": "Payjoin Bật", "payjoin_enabled": "Payjoin Bật",
"payjoin_enabling_popup_content": "Bạn có thể chuyển đổi Payjoin trong Menu → Quyền riêng tư → Sử dụng Payjoin để bật hoặc tắt nó sau.",
"payjoin_enabling_popup_title": "Cho phép Payjoin",
"payjoin_request_awaiting_tx": "Đang chờ giao dịch", "payjoin_request_awaiting_tx": "Đang chờ giao dịch",
"payjoin_request_in_progress": "Trong tiến trình", "payjoin_request_in_progress": "Trong tiến trình",
"payjoin_unavailable": "Payjoin Không có sẵn",
"payjoin_unavailable_sheet_content": "Nhận một giao dịch Payjoin yêu cầu bạn sẵn sàng sử dụng bitcoin. \\ N \\ nas sớm khi ví của bạn có tiền, Payjoin sẽ được bật tự động.",
"payjoin_unavailable_sheet_title": "Tại sao Payjoin không có sẵn?",
"payment_id": "ID thanh toán: ", "payment_id": "ID thanh toán: ",
"payment_was_received": "Thanh toán của bạn đã được nhận.", "payment_was_received": "Thanh toán của bạn đã được nhận.",
"pending": " (đang chờ)", "pending": " (đang chờ)",
@ -1068,4 +1074,4 @@
"you_will_send": "Chuyển đổi từ", "you_will_send": "Chuyển đổi từ",
"youCanGoBackToYourDapp": "Bạn có thể quay lại DAPP của mình ngay bây giờ", "youCanGoBackToYourDapp": "Bạn có thể quay lại DAPP của mình ngay bây giờ",
"yy": "YY" "yy": "YY"
} }

View file

@ -549,10 +549,16 @@
"password": "Ọ̀rọ̀ aṣínà", "password": "Ọ̀rọ̀ aṣínà",
"paste": "Fikún ẹ̀dà yín", "paste": "Fikún ẹ̀dà yín",
"pause_wallet_creation": "Agbara lati ṣẹda Haven Wallet ti wa ni idaduro lọwọlọwọ.", "pause_wallet_creation": "Agbara lati ṣẹda Haven Wallet ti wa ni idaduro lọwọlọwọ.",
"payjoin_card_content": "Payjoin jẹ ẹya-itọju aṣiri tuntun ati ẹya fifipamọ owo sisan ni Bitcoin.",
"payjoin_details": "Payjoin awọn alaye", "payjoin_details": "Payjoin awọn alaye",
"payjoin_enabled": "Payjoin ṣiṣẹ", "payjoin_enabled": "Payjoin ṣiṣẹ",
"payjoin_enabling_popup_content": "O le to Payjoin labẹ akojọ aṣayan → lo Payjoin lati ṣiṣẹ tabi mu kuro nigbamii.",
"payjoin_enabling_popup_title": "Mu ṣiṣẹ Payjoin",
"payjoin_request_awaiting_tx": "O duro de idunadura", "payjoin_request_awaiting_tx": "O duro de idunadura",
"payjoin_request_in_progress": "Ni ilọsiwaju", "payjoin_request_in_progress": "Ni ilọsiwaju",
"payjoin_unavailable": "Payjoin ko si",
"payjoin_unavailable_sheet_content": "Gbigba idunadura Payjoin iṣowo nbeere lati ni Bitcoin ṣetan lati lo. \\ N \\ NAS laipẹ bi apamọwọ rẹ ni owo, Payjoin yoo ṣiṣẹ laifọwọyi.",
"payjoin_unavailable_sheet_title": "Kini idi ti Payjoin ko si?",
"payment_id": "Àmì ìdánimọ̀ àránṣẹ́: ", "payment_id": "Àmì ìdánimọ̀ àránṣẹ́: ",
"payment_was_received": "Àránṣẹ́ yín ti dé.", "payment_was_received": "Àránṣẹ́ yín ti dé.",
"pending": " pípẹ́", "pending": " pípẹ́",
@ -1072,4 +1078,4 @@
"you_will_send": "Ṣe pàṣípààrọ̀ láti", "you_will_send": "Ṣe pàṣípààrọ̀ láti",
"youCanGoBackToYourDapp": "O le pada si tapla rẹ bayi", "youCanGoBackToYourDapp": "O le pada si tapla rẹ bayi",
"yy": "Ọd" "yy": "Ọd"
} }

View file

@ -548,10 +548,16 @@
"password": "密码", "password": "密码",
"paste": "粘贴", "paste": "粘贴",
"pause_wallet_creation": "创建 Haven 钱包的功能当前已暂停。", "pause_wallet_creation": "创建 Haven 钱包的功能当前已暂停。",
"payjoin_card_content": "Payjoin是比特币中的新的隐私权和节省费用的功能。",
"payjoin_details": "Payjoin 细节", "payjoin_details": "Payjoin 细节",
"payjoin_enabled": "Payjoin启用", "payjoin_enabled": "Payjoin启用",
"payjoin_enabling_popup_content": "您可以在菜单下切换 Payjoin隐私→使用 Payjoin以后启用或禁用它。",
"payjoin_enabling_popup_title": "启用 Payjoin",
"payjoin_request_awaiting_tx": "等待交易", "payjoin_request_awaiting_tx": "等待交易",
"payjoin_request_in_progress": "进行中", "payjoin_request_in_progress": "进行中",
"payjoin_unavailable": "Payjoin不可用",
"payjoin_unavailable_sheet_content": "接收 Payjoin Transaction需要您准备使用比特币。",
"payjoin_unavailable_sheet_title": "为什么 Payjoin不可用",
"payment_id": "付款 ID: ", "payment_id": "付款 ID: ",
"payment_was_received": "您的付款已收到。", "payment_was_received": "您的付款已收到。",
"pending": " (待定)", "pending": " (待定)",
@ -1071,4 +1077,4 @@
"you_will_send": "转换自", "you_will_send": "转换自",
"youCanGoBackToYourDapp": "您现在可以回到DAPP", "youCanGoBackToYourDapp": "您现在可以回到DAPP",
"yy": "YY" "yy": "YY"
} }