From 217c19272fb2f8262b0c213ec1370d8b72c3863f Mon Sep 17 00:00:00 2001 From: Serhii Date: Wed, 22 Nov 2023 23:37:05 +0200 Subject: [PATCH] pre seed page refactoring --- lib/di.dart | 16 +++++------ lib/router.dart | 10 +++---- lib/routes.dart | 2 +- .../screens/new_wallet/new_wallet_page.dart | 2 +- .../{pre_seed_page.dart => warning_page.dart} | 28 ++++--------------- lib/view_model/wallet_new_vm.dart | 17 ++++++++++- 6 files changed, 35 insertions(+), 40 deletions(-) rename lib/src/screens/seed/{pre_seed_page.dart => warning_page.dart} (76%) diff --git a/lib/di.dart b/lib/di.dart index d6a43030a..3c2c87783 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -129,7 +129,7 @@ import 'package:cake_wallet/src/screens/rescan/rescan_page.dart'; import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart'; import 'package:cake_wallet/src/screens/restore/restore_options_page.dart'; import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart'; -import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart'; +import 'package:cake_wallet/src/screens/seed/warning_page.dart'; import 'package:cake_wallet/src/screens/seed/wallet_seed_page.dart'; import 'package:cake_wallet/src/screens/send/send_template_page.dart'; import 'package:cake_wallet/src/screens/setup_pin_code/setup_pin_code.dart'; @@ -337,6 +337,9 @@ Future setup({ settingsStore: getIt.get(), walletInfoSource: _walletInfoSource)); + getIt.registerFactoryParam( + (type, _) => AdvancedPrivacySettingsViewModel(type, getIt.get())); + getIt.registerFactory(() => WalletLoadingService( getIt.get(), getIt.get(), @@ -345,7 +348,7 @@ Future setup({ getIt.registerFactoryParam((type, _) => WalletNewVM(getIt.get(), getIt.get(param1: type), _walletInfoSource, - type: type)); + getIt.get(param1: type),type: type)); getIt.registerFactoryParam((WalletType type, _) { return WalletRestorationFromQRVM(getIt.get(), @@ -900,9 +903,9 @@ Future setup({ getIt.registerFactoryParam( (param1, isCreate) => NewWalletTypePage(onTypeSelected: param1, isCreate: isCreate ?? true)); - getIt.registerFactoryParam( - (WalletType type, AdvancedPrivacySettingsViewModel advancedPrivacySettingsViewModel) - => PreSeedPage(type, advancedPrivacySettingsViewModel)); + getIt.registerFactoryParam( + (seedPhraseLength, _) + => WarningPage(seedPhraseLength)); getIt.registerFactoryParam((trade, _) => TradeDetailsViewModel( @@ -1149,9 +1152,6 @@ Future setup({ IoniaPaymentStatusPage( getIt.get(param1: paymentInfo, param2: committedInfo))); - getIt.registerFactoryParam( - (type, _) => AdvancedPrivacySettingsViewModel(type, getIt.get())); - getIt.registerFactoryParam((balanceViewModel, _) => HomeSettingsPage(getIt.get(param1: balanceViewModel))); diff --git a/lib/router.dart b/lib/router.dart index 75f491dfc..f51a0a6db 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -40,7 +40,7 @@ import 'package:cake_wallet/src/screens/order_details/order_details_page.dart'; import 'package:cake_wallet/src/screens/pin_code/pin_code_widget.dart'; import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart'; import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart'; -import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart'; +import 'package:cake_wallet/src/screens/seed/warning_page.dart'; import 'package:cake_wallet/src/screens/settings/connection_sync_page.dart'; import 'package:cake_wallet/src/screens/settings/trocador_providers_page.dart'; import 'package:cake_wallet/src/screens/settings/tor_page.dart'; @@ -417,12 +417,10 @@ Route createRoute(RouteSettings settings) { case Routes.faq: return MaterialPageRoute(builder: (_) => getIt.get()); - case Routes.preSeed: + case Routes.warningPage: return MaterialPageRoute( - builder: (_) => getIt.get( - param1: settings.arguments as WalletType, - param2: getIt.get( - param1: settings.arguments as WalletType))); + builder: (_) => getIt.get( + param1: settings.arguments as int)); case Routes.backup: return CupertinoPageRoute( diff --git a/lib/routes.dart b/lib/routes.dart index 4c1a917ab..9b3e8fbba 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -47,7 +47,7 @@ class Routes { static const exchangeTemplate = '/exchange_template'; static const restoreWalletType = '/restore_wallet_type'; static const restoreWallet = '/restore_wallet'; - static const preSeed = '/pre_seed'; + static const warningPage = '/warning_page'; static const backup = '/backup'; static const editBackupPassword = '/edit_backup_passowrd'; static const restoreFromBackup = '/restore_from_backup'; diff --git a/lib/src/screens/new_wallet/new_wallet_page.dart b/lib/src/screens/new_wallet/new_wallet_page.dart index 5577fcd88..040aa85ea 100644 --- a/lib/src/screens/new_wallet/new_wallet_page.dart +++ b/lib/src/screens/new_wallet/new_wallet_page.dart @@ -67,7 +67,7 @@ class _WalletNameFormState extends State { _stateReaction ??= reaction((_) => _walletNewVM.state, (ExecutionState state) async { if (state is ExecutedSuccessfullyState) { Navigator.of(navigatorKey.currentContext!) - .pushNamed(Routes.preSeed, arguments: _walletNewVM.type); + .pushNamed(Routes.warningPage, arguments: _walletNewVM.seedPhraseWordsLength); } if (state is FailureState) { diff --git a/lib/src/screens/seed/pre_seed_page.dart b/lib/src/screens/seed/warning_page.dart similarity index 76% rename from lib/src/screens/seed/pre_seed_page.dart rename to lib/src/screens/seed/warning_page.dart index 947099983..24e476373 100644 --- a/lib/src/screens/seed/pre_seed_page.dart +++ b/lib/src/screens/seed/warning_page.dart @@ -9,20 +9,14 @@ import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/themes/theme_base.dart'; import 'package:flutter/material.dart'; -class PreSeedPage extends BasePage { - PreSeedPage(this.type, this.advancedPrivacySettingsViewModel) +class WarningPage extends BasePage { + WarningPage(this.seedPhraseLength) : imageLight = Image.asset('assets/images/pre_seed_light.png'), - imageDark = Image.asset('assets/images/pre_seed_dark.png'), - seedPhraseLength = advancedPrivacySettingsViewModel.seedPhraseLength.value { - wordsCount = _wordsCount(type, seedPhraseLength); - } + imageDark = Image.asset('assets/images/pre_seed_dark.png'); final Image imageDark; final Image imageLight; - final WalletType type; - final AdvancedPrivacySettingsViewModel advancedPrivacySettingsViewModel; - final int seedPhraseLength; - late final int wordsCount; + final int? seedPhraseLength; @override Widget? leading(BuildContext context) => null; @@ -53,7 +47,7 @@ class PreSeedPage extends BasePage { Padding( padding: EdgeInsets.all(10), child: Text( - S.of(context).pre_seed_description(wordsCount.toString()), + S.of(context).pre_seed_description(seedPhraseLength.toString()), textAlign: TextAlign.center, style: TextStyle( fontSize: 14, @@ -72,16 +66,4 @@ class PreSeedPage extends BasePage { ), )); } - - static int _wordsCount(WalletType type, int seedPhraseLength) { - switch (type) { - case WalletType.monero: - return 25; - case WalletType.ethereum: - case WalletType.bitcoinCash: - return seedPhraseLength; - default: - return 24; - } - } } diff --git a/lib/view_model/wallet_new_vm.dart b/lib/view_model/wallet_new_vm.dart index 9b1f0834d..d210f1aab 100644 --- a/lib/view_model/wallet_new_vm.dart +++ b/lib/view_model/wallet_new_vm.dart @@ -15,6 +15,7 @@ import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/view_model/wallet_creation_vm.dart'; import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/haven/haven.dart'; +import 'advanced_privacy_settings_view_model.dart'; part 'wallet_new_vm.g.dart'; @@ -22,16 +23,30 @@ class WalletNewVM = WalletNewVMBase with _$WalletNewVM; abstract class WalletNewVMBase extends WalletCreationVM with Store { WalletNewVMBase(AppStore appStore, WalletCreationService walletCreationService, - Box walletInfoSource, + Box walletInfoSource, this.advancedPrivacySettingsViewModel, {required WalletType type}) : selectedMnemonicLanguage = '', super(appStore, walletInfoSource, walletCreationService, type: type, isRecovery: false); + final AdvancedPrivacySettingsViewModel advancedPrivacySettingsViewModel; + @observable String selectedMnemonicLanguage; bool get hasLanguageSelector => type == WalletType.monero || type == WalletType.haven; + int get seedPhraseWordsLength { + switch (type) { + case WalletType.monero: + return 25; + case WalletType.ethereum: + case WalletType.bitcoinCash: + return advancedPrivacySettingsViewModel.seedPhraseLength.value; + default: + return 24; + } + } + @override WalletCredentials getCredentials(dynamic options) { switch (type) {