From 8e6901118a7688518d99d0491bfc06465eda7b8e Mon Sep 17 00:00:00 2001 From: Matthew Fosse Date: Mon, 22 Jul 2024 10:08:19 -0700 Subject: [PATCH] updates --- assets/images/mweb_logo.png | Bin 0 -> 19409 bytes cw_bitcoin/lib/litecoin_wallet.dart | 7 ++- cw_bitcoin/lib/litecoin_wallet_service.dart | 44 ++++++++------- lib/bitcoin/cw_bitcoin.dart | 6 +-- lib/di.dart | 31 ++++++++--- lib/entities/preferences_key.dart | 1 + lib/router.dart | 5 ++ lib/routes.dart | 1 + .../screens/dashboard/pages/balance_page.dart | 11 ++-- .../dashboard/widgets/menu_widget.dart | 5 ++ .../desktop_settings_page.dart | 5 ++ lib/src/screens/settings/mweb_settings.dart | 51 ++++++++++++++++++ lib/src/widgets/dashboard_card_widget.dart | 2 +- lib/src/widgets/setting_actions.dart | 11 ++++ lib/store/settings_store.dart | 13 +++++ .../dashboard/dashboard_view_model.dart | 29 ++++++---- .../settings/mweb_settings_view_model.dart | 32 +++++++++++ res/values/strings_ar.arb | 4 ++ res/values/strings_bg.arb | 4 ++ res/values/strings_cs.arb | 4 ++ res/values/strings_de.arb | 4 ++ res/values/strings_en.arb | 4 ++ res/values/strings_es.arb | 4 ++ res/values/strings_fr.arb | 4 ++ res/values/strings_ha.arb | 4 ++ res/values/strings_hi.arb | 4 ++ res/values/strings_hr.arb | 4 ++ res/values/strings_id.arb | 4 ++ res/values/strings_it.arb | 4 ++ res/values/strings_ja.arb | 4 ++ res/values/strings_ko.arb | 4 ++ res/values/strings_my.arb | 4 ++ res/values/strings_nl.arb | 4 ++ res/values/strings_pl.arb | 4 ++ res/values/strings_pt.arb | 4 ++ res/values/strings_ru.arb | 4 ++ res/values/strings_th.arb | 4 ++ res/values/strings_tl.arb | 4 ++ res/values/strings_tr.arb | 4 ++ res/values/strings_uk.arb | 4 ++ res/values/strings_ur.arb | 4 ++ res/values/strings_yo.arb | 4 ++ res/values/strings_zh.arb | 4 ++ 43 files changed, 308 insertions(+), 50 deletions(-) create mode 100644 assets/images/mweb_logo.png create mode 100644 lib/src/screens/settings/mweb_settings.dart create mode 100644 lib/view_model/settings/mweb_settings_view_model.dart diff --git a/assets/images/mweb_logo.png b/assets/images/mweb_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..92317203ed66a67f86f98e22be61bf2102eb44e0 GIT binary patch literal 19409 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 initialRegularAddressIndex, Map? initialChangeAddressIndex, int? initialMwebHeight, + bool? alwaysScan, }) : mwebHd = bitcoin.HDWallet.fromSeed(seedBytes, network: litecoinNetwork).derivePath("m/1000'"), super( @@ -65,6 +66,7 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store { seedBytes: seedBytes, currency: CryptoCurrency.ltc, ) { + mwebEnabled = alwaysScan ?? false; walletAddresses = LitecoinWalletAddresses( walletInfo, initialAddresses: initialAddresses, @@ -89,7 +91,7 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store { StreamSubscription? _utxoStream; int mwebUtxosHeight = 0; late RpcClient _stub; - late bool mwebEnabled = true; + late bool mwebEnabled; static Future create( {required String mnemonic, @@ -135,6 +137,7 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store { required WalletInfo walletInfo, required Box unspentCoinsInfo, required String password, + required bool alwaysScan, }) async { final snp = await ElectrumWalletSnapshot.load(name, walletInfo.type, password, LitecoinNetwork.mainnet); @@ -149,6 +152,7 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store { initialRegularAddressIndex: snp.regularAddressIndex, initialChangeAddressIndex: snp.changeAddressIndex, addressPageType: snp.addressPageType, + alwaysScan: alwaysScan, ); } @@ -757,5 +761,4 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store { mwebEnabled = enabled; } - bool get isMwebEnabled => mwebEnabled; } diff --git a/cw_bitcoin/lib/litecoin_wallet_service.dart b/cw_bitcoin/lib/litecoin_wallet_service.dart index a41920dcd..12013fb63 100644 --- a/cw_bitcoin/lib/litecoin_wallet_service.dart +++ b/cw_bitcoin/lib/litecoin_wallet_service.dart @@ -19,10 +19,11 @@ class LitecoinWalletService extends WalletService< BitcoinRestoreWalletFromSeedCredentials, BitcoinRestoreWalletFromWIFCredentials, BitcoinNewWalletCredentials> { - LitecoinWalletService(this.walletInfoSource, this.unspentCoinsInfoSource); + LitecoinWalletService(this.walletInfoSource, this.unspentCoinsInfoSource, this.alwaysScan); final Box walletInfoSource; final Box unspentCoinsInfoSource; + final bool alwaysScan; @override WalletType getType() => WalletType.litecoin; @@ -30,11 +31,12 @@ class LitecoinWalletService extends WalletService< @override Future create(BitcoinNewWalletCredentials credentials, {bool? isTestnet}) async { final wallet = await LitecoinWalletBase.create( - mnemonic: await generateElectrumMnemonic(), - password: credentials.password!, - passphrase: credentials.passphrase, - walletInfo: credentials.walletInfo!, - unspentCoinsInfo: unspentCoinsInfoSource); + mnemonic: await generateElectrumMnemonic(), + password: credentials.password!, + passphrase: credentials.passphrase, + walletInfo: credentials.walletInfo!, + unspentCoinsInfo: unspentCoinsInfoSource, + ); await wallet.save(); await wallet.init(); @@ -52,20 +54,24 @@ class LitecoinWalletService extends WalletService< try { final wallet = await LitecoinWalletBase.open( - password: password, - name: name, - walletInfo: walletInfo, - unspentCoinsInfo: unspentCoinsInfoSource); + password: password, + name: name, + walletInfo: walletInfo, + unspentCoinsInfo: unspentCoinsInfoSource, + alwaysScan: alwaysScan, + ); await wallet.init(); saveBackup(name); return wallet; } catch (_) { await restoreWalletFilesFromBackup(name); final wallet = await LitecoinWalletBase.open( - password: password, - name: name, - walletInfo: walletInfo, - unspentCoinsInfo: unspentCoinsInfoSource); + password: password, + name: name, + walletInfo: walletInfo, + unspentCoinsInfo: unspentCoinsInfoSource, + alwaysScan: alwaysScan, + ); await wallet.init(); return wallet; } @@ -93,10 +99,12 @@ class LitecoinWalletService extends WalletService< final currentWalletInfo = walletInfoSource.values .firstWhereOrNull((info) => info.id == WalletBase.idFor(currentName, getType()))!; final currentWallet = await LitecoinWalletBase.open( - password: password, - name: currentName, - walletInfo: currentWalletInfo, - unspentCoinsInfo: unspentCoinsInfoSource); + password: password, + name: currentName, + walletInfo: currentWalletInfo, + unspentCoinsInfo: unspentCoinsInfoSource, + alwaysScan: alwaysScan, + ); await currentWallet.renameWalletFiles(newName); await saveBackup(newName); diff --git a/lib/bitcoin/cw_bitcoin.dart b/lib/bitcoin/cw_bitcoin.dart index 167a585c4..210120ba0 100644 --- a/lib/bitcoin/cw_bitcoin.dart +++ b/lib/bitcoin/cw_bitcoin.dart @@ -208,8 +208,8 @@ class CWBitcoin extends Bitcoin { } WalletService createLitecoinWalletService( - Box walletInfoSource, Box unspentCoinSource) { - return LitecoinWalletService(walletInfoSource, unspentCoinSource); + Box walletInfoSource, Box unspentCoinSource, bool alwaysScan) { + return LitecoinWalletService(walletInfoSource, unspentCoinSource, alwaysScan); } @override @@ -592,6 +592,6 @@ class CWBitcoin extends Bitcoin { @override bool getMwebEnabled(Object wallet) { final litecoinWallet = wallet as LitecoinWallet; - return litecoinWallet.isMwebEnabled; + return litecoinWallet.mwebEnabled; } } diff --git a/lib/di.dart b/lib/di.dart index 1462370fc..8f617fe41 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -93,6 +93,7 @@ import 'package:cake_wallet/src/screens/settings/desktop_settings/desktop_settin import 'package:cake_wallet/src/screens/settings/display_settings_page.dart'; import 'package:cake_wallet/src/screens/settings/domain_lookups_page.dart'; import 'package:cake_wallet/src/screens/settings/manage_nodes_page.dart'; +import 'package:cake_wallet/src/screens/settings/mweb_settings.dart'; import 'package:cake_wallet/src/screens/settings/other_settings_page.dart'; import 'package:cake_wallet/src/screens/settings/privacy_page.dart'; import 'package:cake_wallet/src/screens/settings/security_backup_page.dart'; @@ -139,6 +140,7 @@ import 'package:cake_wallet/view_model/seed_type_view_model.dart'; import 'package:cake_wallet/view_model/set_up_2fa_viewmodel.dart'; import 'package:cake_wallet/view_model/restore/restore_from_qr_vm.dart'; import 'package:cake_wallet/view_model/settings/display_settings_view_model.dart'; +import 'package:cake_wallet/view_model/settings/mweb_settings_view_model.dart'; import 'package:cake_wallet/view_model/settings/other_settings_view_model.dart'; import 'package:cake_wallet/view_model/settings/privacy_settings_view_model.dart'; import 'package:cake_wallet/view_model/settings/security_settings_view_model.dart'; @@ -559,7 +561,8 @@ Future setup({ getIt.registerFactory( () => Modify2FAPage(setup2FAViewModel: getIt.get())); - getIt.registerFactory(() => DesktopSettingsPage(getIt.get())); + getIt.registerFactory( + () => DesktopSettingsPage(getIt.get())); getIt.registerFactoryParam( (pageOption, _) => ReceiveOptionViewModel(getIt.get().wallet!, pageOption)); @@ -678,7 +681,9 @@ Future setup({ getIt.registerFactory(() { final wallet = getIt.get().wallet!; - if (wallet.type == WalletType.monero || wallet.type == WalletType.wownero || wallet.type == WalletType.haven) { + if (wallet.type == WalletType.monero || + wallet.type == WalletType.wownero || + wallet.type == WalletType.haven) { return MoneroAccountListViewModel(wallet); } throw Exception( @@ -738,6 +743,9 @@ Future setup({ getIt.registerFactory(() => SilentPaymentsSettingsViewModel(getIt.get(), getIt.get().wallet!)); + getIt.registerFactory( + () => MwebSettingsViewModel(getIt.get(), getIt.get().wallet!)); + getIt.registerFactory(() { return PrivacySettingsViewModel(getIt.get(), getIt.get().wallet!); }); @@ -802,6 +810,8 @@ Future setup({ getIt.registerFactory( () => SilentPaymentsSettingsPage(getIt.get())); + getIt.registerFactory(() => MwebSettingsPage(getIt.get())); + getIt.registerFactory(() => OtherSettingsPage(getIt.get())); getIt.registerFactory(() => NanoChangeRepPage( @@ -895,7 +905,11 @@ Future setup({ getIt.get().silentPaymentsAlwaysScan, ); case WalletType.litecoin: - return bitcoin!.createLitecoinWalletService(_walletInfoSource, _unspentCoinsInfoSource); + return bitcoin!.createLitecoinWalletService( + _walletInfoSource, + _unspentCoinsInfoSource, + getIt.get().mwebAlwaysScan, + ); case WalletType.ethereum: return ethereum!.createEthereumWalletService(_walletInfoSource); case WalletType.bitcoinCash: @@ -1089,7 +1103,8 @@ Future setup({ getIt.registerFactory( () => CakePayService(getIt.get(), getIt.get())); - getIt.registerFactory(() => CakePayCardsListViewModel(cakePayService: getIt.get())); + getIt.registerFactory( + () => CakePayCardsListViewModel(cakePayService: getIt.get())); getIt.registerFactory(() => CakePayAuthViewModel(cakePayService: getIt.get())); @@ -1121,12 +1136,12 @@ Future setup({ getIt.registerFactoryParam, void>((List args, _) { final vendor = args.first as CakePayVendor; - return CakePayBuyCardPage(getIt.get(param1: vendor), - getIt.get()); + return CakePayBuyCardPage( + getIt.get(param1: vendor), getIt.get()); }); - getIt.registerFactoryParam, void>( - (List args, _) { + getIt + .registerFactoryParam, void>((List args, _) { final paymentCredential = args.first as PaymentCredential; final card = args[1] as CakePayCard; return CakePayBuyCardDetailPage( diff --git a/lib/entities/preferences_key.dart b/lib/entities/preferences_key.dart index 2c669c3bd..5511ba84a 100644 --- a/lib/entities/preferences_key.dart +++ b/lib/entities/preferences_key.dart @@ -50,6 +50,7 @@ class PreferencesKey { static const silentPaymentsAlwaysScan = 'silentPaymentsAlwaysScan'; static const mwebCardDisplay = 'mwebCardDisplay'; static const mwebEnabled = 'mwebEnabled'; + static const mwebAlwaysScan = 'mwebAlwaysScan'; static const shouldShowReceiveWarning = 'should_show_receive_warning'; static const shouldShowYatPopup = 'should_show_yat_popup'; static const shouldShowRepWarning = 'should_show_rep_warning'; diff --git a/lib/router.dart b/lib/router.dart index c09664cef..4094b4d56 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -63,6 +63,7 @@ import 'package:cake_wallet/src/screens/settings/desktop_settings/desktop_settin import 'package:cake_wallet/src/screens/settings/display_settings_page.dart'; import 'package:cake_wallet/src/screens/settings/domain_lookups_page.dart'; import 'package:cake_wallet/src/screens/settings/manage_nodes_page.dart'; +import 'package:cake_wallet/src/screens/settings/mweb_settings.dart'; import 'package:cake_wallet/src/screens/settings/other_settings_page.dart'; import 'package:cake_wallet/src/screens/settings/privacy_page.dart'; import 'package:cake_wallet/src/screens/settings/security_backup_page.dart'; @@ -363,6 +364,10 @@ Route createRoute(RouteSettings settings) { return CupertinoPageRoute( fullscreenDialog: true, builder: (_) => getIt.get()); + case Routes.mwebSettings: + return CupertinoPageRoute( + fullscreenDialog: true, builder: (_) => getIt.get()); + case Routes.connectionSync: return CupertinoPageRoute( fullscreenDialog: true, builder: (_) => getIt.get()); diff --git a/lib/routes.dart b/lib/routes.dart index 78a93bee7..ec8a8f338 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -73,6 +73,7 @@ class Routes { static const cakePayAccountPage = '/cake_pay_account_page'; static const webViewPage = '/web_view_page'; static const silentPaymentsSettings = '/silent_payments_settings'; + static const mwebSettings = '/mweb_settings'; static const connectionSync = '/connection_sync_page'; static const securityBackupPage = '/security_and_backup_page'; static const privacyPage = '/privacy_page'; diff --git a/lib/src/screens/dashboard/pages/balance_page.dart b/lib/src/screens/dashboard/pages/balance_page.dart index c190a3bde..3c516e02d 100644 --- a/lib/src/screens/dashboard/pages/balance_page.dart +++ b/lib/src/screens/dashboard/pages/balance_page.dart @@ -333,7 +333,7 @@ class CryptoBalanceWidget extends StatelessWidget { behavior: HitTestBehavior.opaque, onTap: () => launchUrl( Uri.parse( - "https://guides.cakewallet.com/docs/cryptos/bitcoin/#silent-payments"), + "https://guides.cakewallet.com/docs/cryptos/litecoin/#mweb"), mode: LaunchMode.externalApplication, ), child: Row( @@ -373,8 +373,8 @@ class CryptoBalanceWidget extends StatelessWidget { ], ), onTap: () => _toggleMweb(context), - icon: Icon( - Icons.lock, + icon: ImageIcon( + AssetImage('assets/images/mweb_logo.png'), color: Theme.of(context).extension()!.pageTitleTextColor, size: 50, @@ -422,11 +422,8 @@ class CryptoBalanceWidget extends StatelessWidget { return dashboardViewModel.setSilentPaymentsScanning(newValue); } - Future _toggleMweb(BuildContext context) async { - final isMwebEnabled = dashboardViewModel.mwebEnabled; - final newValue = !isMwebEnabled; - return dashboardViewModel.setMwebEnabled(newValue); + return dashboardViewModel.setMwebEnabled(!dashboardViewModel.mwebEnabled); } } diff --git a/lib/src/screens/dashboard/widgets/menu_widget.dart b/lib/src/screens/dashboard/widgets/menu_widget.dart index 78d8abc95..2ebbab978 100644 --- a/lib/src/screens/dashboard/widgets/menu_widget.dart +++ b/lib/src/screens/dashboard/widgets/menu_widget.dart @@ -188,6 +188,11 @@ class MenuWidgetState extends State { return Container(); } + if (!widget.dashboardViewModel.hasMweb && + item.name(context) == S.current.litecoin_mweb_settings) { + return const SizedBox(); + } + final isLastTile = index == itemCount - 1; return SettingActionButton( diff --git a/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart b/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart index 611b2acb7..90729d4c7 100644 --- a/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart +++ b/lib/src/screens/settings/desktop_settings/desktop_settings_page.dart @@ -60,6 +60,11 @@ class _DesktopSettingsPageState extends State { return Container(); } + if (!widget.dashboardViewModel.hasMweb && + item.name(context) == S.of(context).litecoin_mweb_settings) { + return const SizedBox(); + } + final isLastTile = index == itemCount - 1; return SettingActionButton( isLastTile: isLastTile, diff --git a/lib/src/screens/settings/mweb_settings.dart b/lib/src/screens/settings/mweb_settings.dart new file mode 100644 index 000000000..88dc00f7c --- /dev/null +++ b/lib/src/screens/settings/mweb_settings.dart @@ -0,0 +1,51 @@ +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/routes.dart'; +import 'package:cake_wallet/src/screens/base_page.dart'; +import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arrow.dart'; +import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart'; +import 'package:cake_wallet/view_model/settings/mweb_settings_view_model.dart'; +import 'package:cake_wallet/view_model/settings/silent_payments_settings_view_model.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_mobx/flutter_mobx.dart'; + +class MwebSettingsPage extends BasePage { + MwebSettingsPage(this._mwebSettingsViewModel); + + @override + String get title => S.current.litecoin_mweb_settings; + + final MwebSettingsViewModel _mwebSettingsViewModel; + + @override + Widget body(BuildContext context) { + return SingleChildScrollView( + child: Observer(builder: (_) { + return Container( + padding: EdgeInsets.only(top: 10), + child: Column( + children: [ + SettingsSwitcherCell( + title: S.current.litecoin_mweb_display_card, + value: _mwebSettingsViewModel.mwebCardDisplay, + onValueChange: (_, bool value) { + _mwebSettingsViewModel.setMwebCardDisplay(value); + }, + ), + SettingsSwitcherCell( + title: S.current.litecoin_mweb_always_scan, + value: _mwebSettingsViewModel.mwebAlwaysScan, + onValueChange: (_, bool value) { + _mwebSettingsViewModel.setMwebAlwaysScan(value); + }, + ), + SettingsCellWithArrow( + title: S.current.litecoin_mweb_scanning, + handler: (BuildContext context) => Navigator.of(context).pushNamed(Routes.rescan), + ), + ], + ), + ); + }), + ); + } +} diff --git a/lib/src/widgets/dashboard_card_widget.dart b/lib/src/widgets/dashboard_card_widget.dart index 5a8ca14a4..5bcd4b40c 100644 --- a/lib/src/widgets/dashboard_card_widget.dart +++ b/lib/src/widgets/dashboard_card_widget.dart @@ -22,7 +22,7 @@ class DashBoardRoundedCardWidget extends StatelessWidget { final String subTitle; final Widget? hint; final SvgPicture? svgPicture; - final Icon? icon; + final Widget? icon; final double? customBorder; @override diff --git a/lib/src/widgets/setting_actions.dart b/lib/src/widgets/setting_actions.dart index 272ed57c2..62c4685b3 100644 --- a/lib/src/widgets/setting_actions.dart +++ b/lib/src/widgets/setting_actions.dart @@ -18,6 +18,7 @@ class SettingActions { walletSettingAction, addressBookSettingAction, silentPaymentsSettingAction, + litecoinMwebSettingAction, securityBackupSettingAction, privacySettingAction, displaySettingAction, @@ -30,6 +31,7 @@ class SettingActions { walletSettingAction, addressBookSettingAction, silentPaymentsSettingAction, + litecoinMwebSettingAction, securityBackupSettingAction, privacySettingAction, displaySettingAction, @@ -46,6 +48,15 @@ class SettingActions { }, ); + static SettingActions litecoinMwebSettingAction = SettingActions._( + name: (context) => S.current.litecoin_mweb_settings, + image: 'assets/images/mweb_logo.png', + onTap: (BuildContext context) { + Navigator.pop(context); + Navigator.of(context).pushNamed(Routes.mwebSettings); + }, + ); + static SettingActions connectionSettingAction = SettingActions._( name: (context) => S.of(context).connection_sync, image: 'assets/images/nodes_menu.png', diff --git a/lib/store/settings_store.dart b/lib/store/settings_store.dart index 0992451be..404b47181 100644 --- a/lib/store/settings_store.dart +++ b/lib/store/settings_store.dart @@ -110,6 +110,7 @@ abstract class SettingsStoreBase with Store { required this.customBitcoinFeeRate, required this.silentPaymentsCardDisplay, required this.silentPaymentsAlwaysScan, + required this.mwebAlwaysScan, required this.mwebCardDisplay, required this.mwebEnabled, TransactionPriority? initialBitcoinTransactionPriority, @@ -538,6 +539,11 @@ abstract class SettingsStoreBase with Store { (bool silentPaymentsAlwaysScan) => _sharedPreferences.setBool( PreferencesKey.silentPaymentsAlwaysScan, silentPaymentsAlwaysScan)); + reaction( + (_) => mwebAlwaysScan, + (bool mwebAlwaysScan) => + _sharedPreferences.setBool(PreferencesKey.mwebAlwaysScan, mwebAlwaysScan)); + reaction( (_) => mwebCardDisplay, (bool mwebCardDisplay) => @@ -747,6 +753,9 @@ abstract class SettingsStoreBase with Store { @observable bool silentPaymentsAlwaysScan; + @observable + bool mwebAlwaysScan; + @observable bool mwebCardDisplay; @@ -909,6 +918,8 @@ abstract class SettingsStoreBase with Store { sharedPreferences.getBool(PreferencesKey.silentPaymentsCardDisplay) ?? true; final silentPaymentsAlwaysScan = sharedPreferences.getBool(PreferencesKey.silentPaymentsAlwaysScan) ?? false; + final mwebAlwaysScan = + sharedPreferences.getBool(PreferencesKey.mwebAlwaysScan) ?? false; final mwebCardDisplay = sharedPreferences.getBool(PreferencesKey.mwebCardDisplay) ?? true; final mwebEnabled = sharedPreferences.getBool(PreferencesKey.mwebEnabled) ?? false; @@ -1163,6 +1174,7 @@ abstract class SettingsStoreBase with Store { customBitcoinFeeRate: customBitcoinFeeRate, silentPaymentsCardDisplay: silentPaymentsCardDisplay, silentPaymentsAlwaysScan: silentPaymentsAlwaysScan, + mwebAlwaysScan: mwebAlwaysScan, mwebCardDisplay: mwebCardDisplay, mwebEnabled: mwebEnabled, initialMoneroTransactionPriority: moneroTransactionPriority, @@ -1315,6 +1327,7 @@ abstract class SettingsStoreBase with Store { sharedPreferences.getBool(PreferencesKey.silentPaymentsCardDisplay) ?? true; silentPaymentsAlwaysScan = sharedPreferences.getBool(PreferencesKey.silentPaymentsAlwaysScan) ?? false; + mwebAlwaysScan = sharedPreferences.getBool(PreferencesKey.mwebAlwaysScan) ?? false; mwebCardDisplay = sharedPreferences.getBool(PreferencesKey.mwebCardDisplay) ?? true; mwebEnabled = sharedPreferences.getBool(PreferencesKey.mwebEnabled) ?? false; final nodeId = sharedPreferences.getInt(PreferencesKey.currentNodeIdKey); diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index 64e554b1d..b11213741 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -181,7 +181,8 @@ abstract class DashboardViewModelBase with Store { final _accountTransactions = _wallet.transactionHistory.transactions.values .where((tx) => - wow.wownero!.getTransactionInfoAccountId(tx) == wow.wownero!.getCurrentAccount(wallet).id) + wow.wownero!.getTransactionInfoAccountId(tx) == + wow.wownero!.getCurrentAccount(wallet).id) .toList(); final sortedTransactions = [..._accountTransactions]; @@ -239,6 +240,10 @@ abstract class DashboardViewModelBase with Store { silentPaymentsScanningActive = bitcoin!.getScanningActive(wallet); }); } + + if (hasMweb) { + mwebScanningActive = bitcoin!.getMwebEnabled(wallet); + } } @observable @@ -364,15 +369,15 @@ abstract class DashboardViewModelBase with Store { bool get showMwebCard => hasMweb && settingsStore.mwebCardDisplay; @observable - bool mwebEnabled = false; + bool mwebScanningActive = false; @action void setMwebEnabled(bool active) { - mwebEnabled = active; - - if (hasMweb) { - bitcoin!.setMwebEnabled(wallet, active); + if (!hasMweb) { + return; } + + bitcoin!.setMwebEnabled(wallet, active); } BalanceViewModel balanceViewModel; @@ -552,7 +557,8 @@ abstract class DashboardViewModelBase with Store { } if (wallet.type == WalletType.wownero) { - return wow.wownero!.getTransactionInfoAccountId(tx) == wow.wownero!.getCurrentAccount(wallet).id; + return wow.wownero!.getTransactionInfoAccountId(tx) == + wow.wownero!.getCurrentAccount(wallet).id; } return true; @@ -577,8 +583,8 @@ abstract class DashboardViewModelBase with Store { .getTransactionHistory(wallet) .transactions .values - .where( - (tx) => monero!.getTransactionInfoAccountId(tx) == monero!.getCurrentAccount(wallet).id) + .where((tx) => + monero!.getTransactionInfoAccountId(tx) == monero!.getCurrentAccount(wallet).id) .toList(); transactions.addAll(_accountTransactions.map((transaction) => TransactionListItem( @@ -590,8 +596,9 @@ abstract class DashboardViewModelBase with Store { .getTransactionHistory(wallet) .transactions .values - .where( - (tx) => wow.wownero!.getTransactionInfoAccountId(tx) == wow.wownero!.getCurrentAccount(wallet).id) + .where((tx) => + wow.wownero!.getTransactionInfoAccountId(tx) == + wow.wownero!.getCurrentAccount(wallet).id) .toList(); transactions.addAll(_accountTransactions.map((transaction) => TransactionListItem( diff --git a/lib/view_model/settings/mweb_settings_view_model.dart b/lib/view_model/settings/mweb_settings_view_model.dart new file mode 100644 index 000000000..343947d00 --- /dev/null +++ b/lib/view_model/settings/mweb_settings_view_model.dart @@ -0,0 +1,32 @@ +import 'package:cake_wallet/bitcoin/bitcoin.dart'; +import 'package:cake_wallet/store/settings_store.dart'; +import 'package:cw_core/wallet_base.dart'; +import 'package:mobx/mobx.dart'; + +part 'mweb_settings_view_model.g.dart'; + +class MwebSettingsViewModel = MwebSettingsViewModelBase with _$MwebSettingsViewModel; + +abstract class MwebSettingsViewModelBase with Store { + MwebSettingsViewModelBase(this._settingsStore, this._wallet); + + final SettingsStore _settingsStore; + final WalletBase _wallet; + + @computed + bool get mwebCardDisplay => _settingsStore.mwebCardDisplay; + + @computed + bool get mwebAlwaysScan => _settingsStore.mwebAlwaysScan; + + @action + void setMwebCardDisplay(bool value) { + _settingsStore.mwebCardDisplay = value; + } + + @action + void setMwebAlwaysScan(bool value) { + _settingsStore.mwebAlwaysScan = value; + bitcoin!.setMwebEnabled(_wallet, value); + } +} diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb index b2b8f8d45..6114ce670 100644 --- a/res/values/strings_ar.arb +++ b/res/values/strings_ar.arb @@ -350,6 +350,10 @@ "light_theme": "فاتح", "litecoin_enable_mweb_sync": "تمكين MWEB المزامنة", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "اضبط MWEB دائمًا على المسح الضوئي", + "litecoin_mweb_display_card": "عرض بطاقة mweb", + "litecoin_mweb_scanning": "MWEB المسح الضوئي", + "litecoin_mweb_settings": "إعدادات Litecoin MWEB", "litecoin_what_is_mweb": "ما هو MWEB؟", "load_more": "تحميل المزيد", "loading_your_wallet": "يتم تحميل محفظتك", diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb index b5429dea0..e55fddbb2 100644 --- a/res/values/strings_bg.arb +++ b/res/values/strings_bg.arb @@ -350,6 +350,10 @@ "light_theme": "Светло", "litecoin_enable_mweb_sync": "Активиране на MWEB Sync", "litecoin_mweb": "Litecoin MWeb", + "litecoin_mweb_always_scan": "Задайте MWeb винаги сканиране", + "litecoin_mweb_display_card": "Показване на MWEB карта", + "litecoin_mweb_scanning": "Сканиране на MWEB", + "litecoin_mweb_settings": "Настройки на Litecoin MWeb", "litecoin_what_is_mweb": "Какво е MWEB?", "load_more": "Зареди още", "loading_your_wallet": "Зареждане на портфейл", diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb index 7790bce73..f55ce02b5 100644 --- a/res/values/strings_cs.arb +++ b/res/values/strings_cs.arb @@ -350,6 +350,10 @@ "light_theme": "Světlý", "litecoin_enable_mweb_sync": "Povolit synchronizaci MWeb", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "Nastavit MWeb vždy skenování", + "litecoin_mweb_display_card": "Zobrazit kartu MWeb", + "litecoin_mweb_scanning": "Skenování mWeb", + "litecoin_mweb_settings": "Nastavení litecoin mWeb", "litecoin_what_is_mweb": "Co je Mweb?", "load_more": "Načíst další", "loading_your_wallet": "Načítám peněženku", diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index ee6367eff..e9441bf72 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -350,6 +350,10 @@ "light_theme": "Hell", "litecoin_enable_mweb_sync": "Aktivieren Sie die MWEB -Synchronisierung", "litecoin_mweb": "Litecoin MWeb", + "litecoin_mweb_always_scan": "Setzen Sie MWeb immer scannen", + "litecoin_mweb_display_card": "MWEB -Karte anzeigen", + "litecoin_mweb_scanning": "MWEB Scanning", + "litecoin_mweb_settings": "Litecoin MWeb -Einstellungen", "litecoin_what_is_mweb": "Was ist MWeb?", "load_more": "Mehr laden", "loading_your_wallet": "Wallet wird geladen", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index a1cb8f80a..9bb807645 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -350,6 +350,10 @@ "light_theme": "Light", "litecoin_enable_mweb_sync": "Enable MWEB sync", "litecoin_mweb": "Litecoin MWEB", + "litecoin_mweb_always_scan": "Set MWEB always scanning", + "litecoin_mweb_display_card": "Show MWEB card", + "litecoin_mweb_scanning": "MWEB Scanning", + "litecoin_mweb_settings": "MWEB settings", "litecoin_what_is_mweb": "What is MWEB?", "load_more": "Load more", "loading_your_wallet": "Loading your wallet", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index 2843be33a..f3085677c 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -350,6 +350,10 @@ "light_theme": "Ligera", "litecoin_enable_mweb_sync": "Habilitar MWEB Sync", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "Establecer mweb siempre escaneo", + "litecoin_mweb_display_card": "Mostrar tarjeta MWEB", + "litecoin_mweb_scanning": "Escaneo mweb", + "litecoin_mweb_settings": "Configuración de litecoin mweb", "litecoin_what_is_mweb": "¿Qué es mweb?", "load_more": "Carga más", "loading_your_wallet": "Cargando tu billetera", diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb index bd0b1b6b0..48c1c9031 100644 --- a/res/values/strings_fr.arb +++ b/res/values/strings_fr.arb @@ -350,6 +350,10 @@ "light_theme": "Clair", "litecoin_enable_mweb_sync": "Activer la synchronisation MWEB", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "Définir MWEB Score Scanning", + "litecoin_mweb_display_card": "Afficher la carte MWeb", + "litecoin_mweb_scanning": "Scann mweb", + "litecoin_mweb_settings": "Paramètres litecoin mweb", "litecoin_what_is_mweb": "Qu'est-ce que MWEB?", "load_more": "Charger plus", "loading_your_wallet": "Chargement de votre portefeuille (wallet)", diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb index 9ea2404bc..1a228e84d 100644 --- a/res/values/strings_ha.arb +++ b/res/values/strings_ha.arb @@ -350,6 +350,10 @@ "light_theme": "Haske", "litecoin_enable_mweb_sync": "Kunna Mweb Sync", "litecoin_mweb": "Litcoin Mweb", + "litecoin_mweb_always_scan": "Saita Mweb koyaushe", + "litecoin_mweb_display_card": "Nuna katin Mweb", + "litecoin_mweb_scanning": "Mweb scanning", + "litecoin_mweb_settings": "Saitunan Litcoin Mweb", "litecoin_what_is_mweb": "Menene Mweb?", "load_more": "Like more", "loading_your_wallet": "Ana loda walat ɗin ku", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index d8ae7530c..0cd16ff4b 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -350,6 +350,10 @@ "light_theme": "रोशनी", "litecoin_enable_mweb_sync": "MWEB सिंक सक्षम करें", "litecoin_mweb": "लिटकोइन मेवेब", + "litecoin_mweb_always_scan": "MWEB हमेशा स्कैनिंग सेट करें", + "litecoin_mweb_display_card": "MWEB कार्ड दिखाएं", + "litecoin_mweb_scanning": "MWEB स्कैनिंग", + "litecoin_mweb_settings": "Litecoin MWEB सेटिंग्स", "litecoin_what_is_mweb": "MWEB क्या है?", "load_more": "और लोड करें", "loading_your_wallet": "अपना बटुआ लोड कर रहा है", diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb index 15d989657..f6770f6d6 100644 --- a/res/values/strings_hr.arb +++ b/res/values/strings_hr.arb @@ -350,6 +350,10 @@ "light_theme": "Svijetla", "litecoin_enable_mweb_sync": "Omogući MWEB sinkronizaciju", "litecoin_mweb": "Litecoin MWeb", + "litecoin_mweb_always_scan": "Postavite MWeb uvijek skeniranje", + "litecoin_mweb_display_card": "Prikaži MWeb karticu", + "litecoin_mweb_scanning": "MWEB skeniranje", + "litecoin_mweb_settings": "Litecoin MWeb postavke", "litecoin_what_is_mweb": "Što je MWEB?", "load_more": "Učitaj više", "loading_your_wallet": "Novčanik se učitava", diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb index 6dcb89289..fa4e83276 100644 --- a/res/values/strings_id.arb +++ b/res/values/strings_id.arb @@ -350,6 +350,10 @@ "light_theme": "Terang", "litecoin_enable_mweb_sync": "Aktifkan Sinkronisasi MWEB", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "Atur mWeb selalu memindai", + "litecoin_mweb_display_card": "Tunjukkan kartu mWeb", + "litecoin_mweb_scanning": "Pemindaian MWEB", + "litecoin_mweb_settings": "Pengaturan Litecoin MWEB", "litecoin_what_is_mweb": "Apa itu MWEB?", "load_more": "Muat lebih banyak", "loading_your_wallet": "Memuat dompet Anda", diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb index 157582562..d79c50bea 100644 --- a/res/values/strings_it.arb +++ b/res/values/strings_it.arb @@ -351,6 +351,10 @@ "light_theme": "Bianco", "litecoin_enable_mweb_sync": "Abilita MWeb Sync", "litecoin_mweb": "Litecoin MWeb", + "litecoin_mweb_always_scan": "Imposta MWeb per scansionare sempre", + "litecoin_mweb_display_card": "Mostra la scheda MWeb", + "litecoin_mweb_scanning": "Scansione MWeb", + "litecoin_mweb_settings": "Impostazioni MWeb Litecoin", "litecoin_what_is_mweb": "Cos'è MWeb?", "load_more": "Carica di più", "loading_your_wallet": "Caricamento portafoglio", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index fa6d48aa0..2a8f5c764 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -351,6 +351,10 @@ "light_theme": "光", "litecoin_enable_mweb_sync": "MWEB同期を有効にします", "litecoin_mweb": "litecoin mweb", + "litecoin_mweb_always_scan": "MWEBを常にスキャンします", + "litecoin_mweb_display_card": "MWEBカードを表示します", + "litecoin_mweb_scanning": "MWEBスキャン", + "litecoin_mweb_settings": "Litecoin MWEB設定", "litecoin_what_is_mweb": "MWEBとは何ですか?", "load_more": "もっと読み込む", "loading_your_wallet": "ウォレットをロードしています", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 7d8d44b0d..ee7f2f9c5 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -350,6 +350,10 @@ "light_theme": "빛", "litecoin_enable_mweb_sync": "mweb 동기화를 활성화합니다", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "mweb는 항상 스캔을 설정합니다", + "litecoin_mweb_display_card": "mweb 카드를 보여주십시오", + "litecoin_mweb_scanning": "mweb 스캔", + "litecoin_mweb_settings": "Litecoin mweb 설정", "litecoin_what_is_mweb": "MWEB 란 무엇입니까?", "load_more": "더로드하십시오", "loading_your_wallet": "지갑 넣기", diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb index e2e7b816a..6106b0557 100644 --- a/res/values/strings_my.arb +++ b/res/values/strings_my.arb @@ -350,6 +350,10 @@ "light_theme": "အလင်း", "litecoin_enable_mweb_sync": "mweb စည်းညှိမှုကို enable", "litecoin_mweb": "Litecoin Mweb", + "litecoin_mweb_always_scan": "Mweb အမြဲစကင်ဖတ်စစ်ဆေးပါ", + "litecoin_mweb_display_card": "MweB ကဒ်ကိုပြပါ", + "litecoin_mweb_scanning": "mweb scanning", + "litecoin_mweb_settings": "Litecoin Mweb ချိန်ညှိချက်များ", "litecoin_what_is_mweb": "MweB ဆိုတာဘာလဲ။", "load_more": "ပိုပြီး load", "loading_your_wallet": "သင့်ပိုက်ဆံအိတ်ကို ဖွင့်နေသည်။", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 2c5f4a0b0..74c6794f7 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -350,6 +350,10 @@ "light_theme": "Licht", "litecoin_enable_mweb_sync": "MWEB SYNC inschakelen", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "Stel mweb altijd op scannen", + "litecoin_mweb_display_card": "Toon MWEB -kaart", + "litecoin_mweb_scanning": "MWEB -scanning", + "litecoin_mweb_settings": "Litecoin mweb -instellingen", "litecoin_what_is_mweb": "Wat is Mweb?", "load_more": "Meer laden", "loading_your_wallet": "Uw portemonnee laden", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index 4a7698002..9f37d04a0 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -350,6 +350,10 @@ "light_theme": "Jasny", "litecoin_enable_mweb_sync": "Włącz synchronizację MWEB", "litecoin_mweb": "Litecoin MWEB", + "litecoin_mweb_always_scan": "Ustaw MWEB zawsze skanowanie", + "litecoin_mweb_display_card": "Pokaż kartę MWEB", + "litecoin_mweb_scanning": "Skanowanie MWEB", + "litecoin_mweb_settings": "Ustawienia MWEB Litecoin", "litecoin_what_is_mweb": "Co to jest MWEB?", "load_more": "Załaduj więcej", "loading_your_wallet": "Ładowanie portfela", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 2d41ea1d6..c3dd95bad 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -350,6 +350,10 @@ "light_theme": "Luz", "litecoin_enable_mweb_sync": "Habilite MWEB Sync", "litecoin_mweb": "Litecoin Mweb", + "litecoin_mweb_always_scan": "Definir mweb sempre digitalizando", + "litecoin_mweb_display_card": "Mostre o cartão MWEB", + "litecoin_mweb_scanning": "MWEB Scanning", + "litecoin_mweb_settings": "Configurações do Litecoin MWEB", "litecoin_what_is_mweb": "O que é MWeb?", "load_more": "Carregue mais", "loading_your_wallet": "Abrindo sua carteira", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 968140c18..d3a887b7f 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -350,6 +350,10 @@ "light_theme": "Светлая", "litecoin_enable_mweb_sync": "Включить MWEB Sync", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "Установить MWEB всегда сканирование", + "litecoin_mweb_display_card": "Показать карту MWEB", + "litecoin_mweb_scanning": "MWEB сканирование", + "litecoin_mweb_settings": "Litecoin MWEB Settings", "litecoin_what_is_mweb": "Что такое MWEB?", "load_more": "Загрузи больше", "loading_your_wallet": "Загрузка кошелька", diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb index 516c5484e..c615f1a07 100644 --- a/res/values/strings_th.arb +++ b/res/values/strings_th.arb @@ -350,6 +350,10 @@ "light_theme": "สว่าง", "litecoin_enable_mweb_sync": "เปิดใช้งานการซิงค์ MWEB", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "ตั้งค่าการสแกน MWEB เสมอ", + "litecoin_mweb_display_card": "แสดงการ์ด mweb", + "litecoin_mweb_scanning": "การสแกน MWEB", + "litecoin_mweb_settings": "การตั้งค่า Litecoin Mweb", "litecoin_what_is_mweb": "MWEB คืออะไร?", "load_more": "โหลดมากขึ้น", "loading_your_wallet": "กำลังโหลดกระเป๋าของคุณ", diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb index 9d05d4fd8..c4c6bb2c6 100644 --- a/res/values/strings_tl.arb +++ b/res/values/strings_tl.arb @@ -350,6 +350,10 @@ "light_theme": "Ilaw", "litecoin_enable_mweb_sync": "Paganahin ang MWEB Sync", "litecoin_mweb": "Litecoin Mweb", + "litecoin_mweb_always_scan": "Itakda ang MWeb na laging nag -scan", + "litecoin_mweb_display_card": "Ipakita ang MWEB Card", + "litecoin_mweb_scanning": "Pag -scan ng Mweb", + "litecoin_mweb_settings": "Mga Setting ng Litecoin MWeb", "litecoin_what_is_mweb": "Ano ang MWEB?", "load_more": "Mag -load pa", "loading_your_wallet": "Naglo -load ng iyong pitaka", diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb index f87f2f6b3..60b51424d 100644 --- a/res/values/strings_tr.arb +++ b/res/values/strings_tr.arb @@ -350,6 +350,10 @@ "light_theme": "Aydınlık", "litecoin_enable_mweb_sync": "MWEB senkronizasyonunu etkinleştir", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "MWEB'i her zaman taramayı ayarlayın", + "litecoin_mweb_display_card": "MWEB kartını göster", + "litecoin_mweb_scanning": "MWEB taraması", + "litecoin_mweb_settings": "Litecoin mweb ayarları", "litecoin_what_is_mweb": "MWEB nedir?", "load_more": "Daha fazla yükle", "loading_your_wallet": "Cüzdanın yükleniyor", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index dfbc7b83c..7ae1c0da2 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -350,6 +350,10 @@ "light_theme": "Світла", "litecoin_enable_mweb_sync": "Увімкнути MWEB SYNC", "litecoin_mweb": "Litecoin mweb", + "litecoin_mweb_always_scan": "Встановити mweb завжди сканувати", + "litecoin_mweb_display_card": "Показати карту MWeb", + "litecoin_mweb_scanning": "Сканування Mweb", + "litecoin_mweb_settings": "Налаштування Litecoin MWEB", "litecoin_what_is_mweb": "Що таке mweb?", "load_more": "Завантажити ще", "loading_your_wallet": "Завантаження гаманця", diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb index ca52cccc9..672f3a980 100644 --- a/res/values/strings_ur.arb +++ b/res/values/strings_ur.arb @@ -350,6 +350,10 @@ "light_theme": "روشنی", "litecoin_enable_mweb_sync": "MWEB مطابقت پذیری کو فعال کریں", "litecoin_mweb": "litcoin mweb", + "litecoin_mweb_always_scan": "MWEB ہمیشہ اسکیننگ سیٹ کریں", + "litecoin_mweb_display_card": "MWEB کارڈ دکھائیں", + "litecoin_mweb_scanning": "MWEB اسکیننگ", + "litecoin_mweb_settings": "litcoin mweb کی ترتیبات", "litecoin_what_is_mweb": "MWEB کیا ہے؟", "load_more": "مزید لوڈ کریں", "loading_your_wallet": "آپ کا بٹوہ لوڈ ہو رہا ہے۔", diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb index 95384b1c3..d4fe70afd 100644 --- a/res/values/strings_yo.arb +++ b/res/values/strings_yo.arb @@ -351,6 +351,10 @@ "light_theme": "Funfun bí eérú", "litecoin_enable_mweb_sync": "Mu ṣiṣẹmu MweB", "litecoin_mweb": "Livecoin mweb", + "litecoin_mweb_always_scan": "Ṣeto mweb nigbagbogbo n ṣayẹwo", + "litecoin_mweb_display_card": "Fihan kaadi Mweb", + "litecoin_mweb_scanning": "Mweb scanning", + "litecoin_mweb_settings": "Awọn eto idile Mwein mweb", "litecoin_what_is_mweb": "Kini mweb?", "load_more": "Ẹru diẹ sii", "loading_your_wallet": "A ń ṣí àpamọ́wọ́ yín", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index c1d559daa..c904d6cd3 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -350,6 +350,10 @@ "light_theme": "艳丽", "litecoin_enable_mweb_sync": "启用MWEB同步", "litecoin_mweb": "Litecoin Mweb", + "litecoin_mweb_always_scan": "设置MWEB总是扫描", + "litecoin_mweb_display_card": "显示MWEB卡", + "litecoin_mweb_scanning": "MWEB扫描", + "litecoin_mweb_settings": "Litecoin MWEB设置", "litecoin_what_is_mweb": "什么是MWEB?", "load_more": "装载更多", "loading_your_wallet": "加载您的钱包",