pre seed page refactoring

Serhii committed Nov 22, 2023 at 23:37 UTC 217c19272fb2f8262b0c213ec1370d8b72c3863f
6 files changed +35 -40
lib/di.dart
+8 -8
@@ -129,7 +129,7 @@ import 'package:cake_wallet/src/screens/rescan/rescan_page.dart';
129 import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart';
130 import 'package:cake_wallet/src/screens/restore/restore_options_page.dart';
131 import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart';
132 -import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
132 +import 'package:cake_wallet/src/screens/seed/warning_page.dart';
133 import 'package:cake_wallet/src/screens/seed/wallet_seed_page.dart';
134 import 'package:cake_wallet/src/screens/send/send_template_page.dart';
135 import 'package:cake_wallet/src/screens/setup_pin_code/setup_pin_code.dart';
@@ -337,6 +337,9 @@ Future<void> setup({
337 settingsStore: getIt.get<SettingsStore>(),
338 walletInfoSource: _walletInfoSource));
339
340 + getIt.registerFactoryParam<AdvancedPrivacySettingsViewModel, WalletType, void>(
341 + (type, _) => AdvancedPrivacySettingsViewModel(type, getIt.get<SettingsStore>()));
342 +
343 getIt.registerFactory<WalletLoadingService>(() => WalletLoadingService(
344 getIt.get<SharedPreferences>(),
345 getIt.get<KeyService>(),
@@ -345,7 +348,7 @@ Future<void> setup({
348 getIt.registerFactoryParam<WalletNewVM, WalletType, void>((type, _) =>
349 WalletNewVM(getIt.get<AppStore>(),
350 getIt.get<WalletCreationService>(param1: type), _walletInfoSource,
348 - type: type));
351 + getIt.get<AdvancedPrivacySettingsViewModel>(param1: type),type: type));
352
353 getIt.registerFactoryParam<WalletRestorationFromQRVM, WalletType, void>((WalletType type, _) {
354 return WalletRestorationFromQRVM(getIt.get<AppStore>(),
@@ -900,9 +903,9 @@ Future<void> setup({
903 getIt.registerFactoryParam<NewWalletTypePage, void Function(BuildContext, WalletType), bool?>(
904 (param1, isCreate) => NewWalletTypePage(onTypeSelected: param1, isCreate: isCreate ?? true));
905
903 - getIt.registerFactoryParam<PreSeedPage, WalletType, AdvancedPrivacySettingsViewModel>(
904 - (WalletType type, AdvancedPrivacySettingsViewModel advancedPrivacySettingsViewModel)
905 - => PreSeedPage(type, advancedPrivacySettingsViewModel));
906 + getIt.registerFactoryParam<WarningPage, int, void>(
907 + (seedPhraseLength, _)
908 + => WarningPage(seedPhraseLength));
909
910 getIt.registerFactoryParam<TradeDetailsViewModel, Trade, void>((trade, _) =>
911 TradeDetailsViewModel(
@@ -1149,9 +1152,6 @@ Future<void> setup({
1152 IoniaPaymentStatusPage(
1153 getIt.get<IoniaPaymentStatusViewModel>(param1: paymentInfo, param2: committedInfo)));
1154
1152 - getIt.registerFactoryParam<AdvancedPrivacySettingsViewModel, WalletType, void>(
1153 - (type, _) => AdvancedPrivacySettingsViewModel(type, getIt.get<SettingsStore>()));
1154 -
1155 getIt.registerFactoryParam<HomeSettingsPage, BalanceViewModel, void>((balanceViewModel, _) =>
1156 HomeSettingsPage(getIt.get<HomeSettingsViewModel>(param1: balanceViewModel)));
1157
lib/router.dart
+4 -6
@@ -40,7 +40,7 @@ import 'package:cake_wallet/src/screens/order_details/order_details_page.dart';
40 import 'package:cake_wallet/src/screens/pin_code/pin_code_widget.dart';
41 import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart';
42 import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart';
43 -import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
43 +import 'package:cake_wallet/src/screens/seed/warning_page.dart';
44 import 'package:cake_wallet/src/screens/settings/connection_sync_page.dart';
45 import 'package:cake_wallet/src/screens/settings/trocador_providers_page.dart';
46 import 'package:cake_wallet/src/screens/settings/tor_page.dart';
@@ -417,12 +417,10 @@ Route<dynamic> createRoute(RouteSettings settings) {
417 case Routes.faq:
418 return MaterialPageRoute<void>(builder: (_) => getIt.get<FaqPage>());
419
420 - case Routes.preSeed:
420 + case Routes.warningPage:
421 return MaterialPageRoute<void>(
422 - builder: (_) => getIt.get<PreSeedPage>(
423 - param1: settings.arguments as WalletType,
424 - param2: getIt.get<AdvancedPrivacySettingsViewModel>(
425 - param1: settings.arguments as WalletType)));
422 + builder: (_) => getIt.get<WarningPage>(
423 + param1: settings.arguments as int));
424
425 case Routes.backup:
426 return CupertinoPageRoute<void>(
lib/routes.dart
+1 -1
@@ -47,7 +47,7 @@ class Routes {
47 static const exchangeTemplate = '/exchange_template';
48 static const restoreWalletType = '/restore_wallet_type';
49 static const restoreWallet = '/restore_wallet';
50 - static const preSeed = '/pre_seed';
50 + static const warningPage = '/warning_page';
51 static const backup = '/backup';
52 static const editBackupPassword = '/edit_backup_passowrd';
53 static const restoreFromBackup = '/restore_from_backup';
lib/src/screens/new_wallet/new_wallet_page.dart
+1 -1
@@ -67,7 +67,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
67 _stateReaction ??= reaction((_) => _walletNewVM.state, (ExecutionState state) async {
68 if (state is ExecutedSuccessfullyState) {
69 Navigator.of(navigatorKey.currentContext!)
70 - .pushNamed(Routes.preSeed, arguments: _walletNewVM.type);
70 + .pushNamed(Routes.warningPage, arguments: _walletNewVM.seedPhraseWordsLength);
71 }
72
73 if (state is FailureState) {
lib/src/screens/seed/warning_page.dart renamed
+5 -23
@@ -9,20 +9,14 @@ import 'package:cake_wallet/routes.dart';
9 import 'package:cake_wallet/themes/theme_base.dart';
10 import 'package:flutter/material.dart';
11
12 -class PreSeedPage extends BasePage {
13 - PreSeedPage(this.type, this.advancedPrivacySettingsViewModel)
12 +class WarningPage extends BasePage {
13 + WarningPage(this.seedPhraseLength)
14 : imageLight = Image.asset('assets/images/pre_seed_light.png'),
15 - imageDark = Image.asset('assets/images/pre_seed_dark.png'),
16 - seedPhraseLength = advancedPrivacySettingsViewModel.seedPhraseLength.value {
17 - wordsCount = _wordsCount(type, seedPhraseLength);
18 - }
15 + imageDark = Image.asset('assets/images/pre_seed_dark.png');
16
17 final Image imageDark;
18 final Image imageLight;
22 - final WalletType type;
23 - final AdvancedPrivacySettingsViewModel advancedPrivacySettingsViewModel;
24 - final int seedPhraseLength;
25 - late final int wordsCount;
19 + final int? seedPhraseLength;
20
21 @override
22 Widget? leading(BuildContext context) => null;
@@ -53,7 +47,7 @@ class PreSeedPage extends BasePage {
47 Padding(
48 padding: EdgeInsets.all(10),
49 child: Text(
56 - S.of(context).pre_seed_description(wordsCount.toString()),
50 + S.of(context).pre_seed_description(seedPhraseLength.toString()),
51 textAlign: TextAlign.center,
52 style: TextStyle(
53 fontSize: 14,
@@ -72,16 +66,4 @@ class PreSeedPage extends BasePage {
66 ),
67 ));
68 }
75 -
76 - static int _wordsCount(WalletType type, int seedPhraseLength) {
77 - switch (type) {
78 - case WalletType.monero:
79 - return 25;
80 - case WalletType.ethereum:
81 - case WalletType.bitcoinCash:
82 - return seedPhraseLength;
83 - default:
84 - return 24;
85 - }
86 - }
69 }
lib/view_model/wallet_new_vm.dart
+16 -1
@@ -15,6 +15,7 @@ import 'package:cw_core/wallet_type.dart';
15 import 'package:cake_wallet/view_model/wallet_creation_vm.dart';
16 import 'package:cake_wallet/bitcoin/bitcoin.dart';
17 import 'package:cake_wallet/haven/haven.dart';
18 +import 'advanced_privacy_settings_view_model.dart';
19
20 part 'wallet_new_vm.g.dart';
21
@@ -22,16 +23,30 @@ class WalletNewVM = WalletNewVMBase with _$WalletNewVM;
23
24 abstract class WalletNewVMBase extends WalletCreationVM with Store {
25 WalletNewVMBase(AppStore appStore, WalletCreationService walletCreationService,
25 - Box<WalletInfo> walletInfoSource,
26 + Box<WalletInfo> walletInfoSource, this.advancedPrivacySettingsViewModel,
27 {required WalletType type})
28 : selectedMnemonicLanguage = '',
29 super(appStore, walletInfoSource, walletCreationService, type: type, isRecovery: false);
30
31 + final AdvancedPrivacySettingsViewModel advancedPrivacySettingsViewModel;
32 +
33 @observable
34 String selectedMnemonicLanguage;
35
36 bool get hasLanguageSelector => type == WalletType.monero || type == WalletType.haven;
37
38 + int get seedPhraseWordsLength {
39 + switch (type) {
40 + case WalletType.monero:
41 + return 25;
42 + case WalletType.ethereum:
43 + case WalletType.bitcoinCash:
44 + return advancedPrivacySettingsViewModel.seedPhraseLength.value;
45 + default:
46 + return 24;
47 + }
48 + }
49 +
50 @override
51 WalletCredentials getCredentials(dynamic options) {
52 switch (type) {