info page refactoring
Serhii committed
Dec 30, 2023 at 21:55 UTC
3522561cfcbe420caee880988990af3fb8379973
9 files changed
+148
-96
lib/di.dart
+6
-3
@@ -50,6 +50,7 @@ import 'package:cake_wallet/src/screens/settings/connection_sync_page.dart';
50
import 'package:cake_wallet/src/screens/settings/trocador_providers_page.dart';
51
import 'package:cake_wallet/src/screens/settings/tor_page.dart';
52
import 'package:cake_wallet/src/screens/setup_2fa/modify_2fa_page.dart';
53
+import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_info_page.dart';
54
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_qr_page.dart';
55
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
56
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
@@ -133,7 +134,7 @@ import 'package:cake_wallet/src/screens/rescan/rescan_page.dart';
134
import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart';
135
import 'package:cake_wallet/src/screens/restore/restore_options_page.dart';
136
import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart';
136
-import 'package:cake_wallet/src/screens/seed/warning_page.dart';
137
+import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
138
import 'package:cake_wallet/src/screens/seed/wallet_seed_page.dart';
139
import 'package:cake_wallet/src/screens/send/send_template_page.dart';
140
import 'package:cake_wallet/src/screens/setup_pin_code/setup_pin_code.dart';
@@ -524,6 +525,8 @@ Future<void> setup({
525
getIt.registerFactory<TransactionsPage>(
526
() => TransactionsPage(dashboardViewModel: getIt.get<DashboardViewModel>()));
527
528
+ getIt.registerFactory<Setup2FAInfoPage>(() => Setup2FAInfoPage());
529
+
530
getIt.registerFactory<Setup2FAPage>(
531
() => Setup2FAPage(setup2FAViewModel: getIt.get<Setup2FAViewModel>()));
532
@@ -915,9 +918,9 @@ Future<void> setup({
918
getIt.registerFactoryParam<NewWalletTypePage, void Function(BuildContext, WalletType), bool?>(
919
(param1, isCreate) => NewWalletTypePage(onTypeSelected: param1, isCreate: isCreate ?? true));
920
918
- getIt.registerFactoryParam<WarningPage, int?, void>(
921
+ getIt.registerFactoryParam<PreSeedPage, int, void>(
922
(seedPhraseLength, _)
920
- => WarningPage(seedPhraseLength));
923
+ => PreSeedPage(seedPhraseLength));
924
925
getIt.registerFactoryParam<TradeDetailsViewModel, Trade, void>((trade, _) =>
926
TradeDetailsViewModel(
lib/router.dart
+8
-4
@@ -42,11 +42,12 @@ import 'package:cake_wallet/src/screens/order_details/order_details_page.dart';
42
import 'package:cake_wallet/src/screens/pin_code/pin_code_widget.dart';
43
import 'package:cake_wallet/src/screens/restore/restore_from_backup_page.dart';
44
import 'package:cake_wallet/src/screens/restore/wallet_restore_page.dart';
45
-import 'package:cake_wallet/src/screens/seed/warning_page.dart';
45
+import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
46
import 'package:cake_wallet/src/screens/settings/connection_sync_page.dart';
47
import 'package:cake_wallet/src/screens/settings/trocador_providers_page.dart';
48
import 'package:cake_wallet/src/screens/settings/tor_page.dart';
49
import 'package:cake_wallet/src/screens/setup_2fa/modify_2fa_page.dart';
50
+import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_info_page.dart';
51
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_qr_page.dart';
52
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa.dart';
53
import 'package:cake_wallet/src/screens/setup_2fa/setup_2fa_enter_code_page.dart';
@@ -414,10 +415,10 @@ Route<dynamic> createRoute(RouteSettings settings) {
415
case Routes.faq:
416
return MaterialPageRoute<void>(builder: (_) => getIt.get<FaqPage>());
417
417
- case Routes.warningPage:
418
+ case Routes.preSeedPage:
419
return MaterialPageRoute<void>(
419
- builder: (_) => getIt.get<WarningPage>(
420
- param1: settings.arguments as int?));
420
+ builder: (_) => getIt.get<PreSeedPage>(
421
+ param1: settings.arguments as int));
422
423
case Routes.backup:
424
return CupertinoPageRoute<void>(
@@ -580,6 +581,9 @@ Route<dynamic> createRoute(RouteSettings settings) {
581
case Routes.modify2FAPage:
582
return MaterialPageRoute<void>(builder: (_) => getIt.get<Modify2FAPage>());
583
584
+ case Routes.setup2faInfoPage:
585
+ return MaterialPageRoute<void>(builder: (_) => getIt.get<Setup2FAInfoPage>());
586
+
587
case Routes.homeSettings:
588
return CupertinoPageRoute<void>(
589
builder: (_) => getIt.get<HomeSettingsPage>(param1: settings.arguments),
lib/routes.dart
+2
-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 warningPage = '/warning_page';
50
+ static const preSeedPage = '/pre_seed_page';
51
static const backup = '/backup';
52
static const editBackupPassword = '/edit_backup_passowrd';
53
static const restoreFromBackup = '/restore_from_backup';
@@ -96,6 +96,7 @@ class Routes {
96
static const setup_2faQRPage = '/setup_2fa_qr_page';
97
static const totpAuthCodePage = '/totp_auth_code_page';
98
static const modify2FAPage = '/modify_2fa_page';
99
+ static const setup2faInfoPage = '/setup_2fa_info_page';
100
static const homeSettings = '/home_settings';
101
static const editToken = '/edit_token';
102
static const manageNodes = '/manage_nodes';
lib/src/screens/InfoPage.dart
new
+83
@@ -0,0 +1,83 @@
1
+import 'package:cake_wallet/src/screens/base_page.dart';
2
+import 'package:cake_wallet/src/widgets/primary_button.dart';
3
+import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
4
+import 'package:cake_wallet/themes/theme_base.dart';
5
+import 'package:cake_wallet/utils/responsive_layout_util.dart';
6
+import 'package:flutter/material.dart';
7
+
8
+abstract class InfoPage extends BasePage {
9
+ InfoPage({
10
+ this.imageLightPath = 'assets/images/pre_seed_light.png',
11
+ this.imageDarkPath = 'assets/images/pre_seed_dark.png',
12
+ });
13
+
14
+ final String imageLightPath;
15
+ final String imageDarkPath;
16
+
17
+ Image get imageLight => Image.asset(imageLightPath);
18
+ Image get imageDark => Image.asset(imageDarkPath);
19
+
20
+ bool get onWillPop => true;
21
+ String get pageTitle;
22
+ String get pageDescription;
23
+ String get buttonText;
24
+ void Function(BuildContext) get onPressed;
25
+
26
+ @override
27
+ Widget? leading(BuildContext context) => null;
28
+
29
+ @override
30
+ String get title => pageTitle;
31
+
32
+ @override
33
+ Widget body(BuildContext context) {
34
+ final image = currentTheme.type == ThemeType.dark ? imageDark : imageLight;
35
+
36
+ return WillPopScope(
37
+ onWillPop: () async => onWillPop,
38
+ child: Container(
39
+ alignment: Alignment.center,
40
+ padding: EdgeInsets.all(24),
41
+ child: ConstrainedBox(
42
+ constraints: BoxConstraints(
43
+ maxWidth: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint),
44
+ child: Column(
45
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
46
+ children: <Widget>[
47
+ Expanded(
48
+ child: ConstrainedBox(
49
+ constraints: BoxConstraints(
50
+ maxHeight: MediaQuery.of(context).size.height * 0.3),
51
+ child: AspectRatio(aspectRatio: 1, child: image),
52
+ ),
53
+ ),
54
+ Expanded(
55
+ child: Padding(
56
+ padding: EdgeInsets.all(10),
57
+ child: Text(
58
+ pageDescription,
59
+ textAlign: TextAlign.center,
60
+ style: TextStyle(
61
+ height: 1.7,
62
+ fontSize: 14,
63
+ fontWeight: FontWeight.normal,
64
+ color: Theme.of(context)
65
+ .extension<CakeTextTheme>()!
66
+ .secondaryTextColor,
67
+ ),
68
+ ),
69
+ ),
70
+ ),
71
+ PrimaryButton(
72
+ onPressed: () => onPressed(context),
73
+ text: buttonText,
74
+ color: Theme.of(context).primaryColor,
75
+ textColor: Colors.white,
76
+ ),
77
+ ],
78
+ ),
79
+ ),
80
+ ),
81
+ );
82
+ }
83
+}
lib/src/screens/new_wallet/new_wallet_page.dart
+1
-1
@@ -73,7 +73,7 @@ class _WalletNameFormState extends State<WalletNameForm> {
73
_stateReaction ??= reaction((_) => _walletNewVM.state, (ExecutionState state) async {
74
if (state is ExecutedSuccessfullyState) {
75
Navigator.of(navigatorKey.currentContext!)
76
- .pushNamed(Routes.warningPage, arguments: _walletNewVM.seedPhraseWordsLength);
76
+ .pushNamed(Routes.preSeedPage, arguments: _walletNewVM.seedPhraseWordsLength);
77
}
78
79
if (state is FailureState) {
lib/src/screens/seed/pre_seed_page.dart
new
+27
@@ -0,0 +1,27 @@
1
+import 'package:cake_wallet/generated/i18n.dart';
2
+import 'package:cake_wallet/routes.dart';
3
+import 'package:cake_wallet/src/screens/InfoPage.dart';
4
+import 'package:flutter/cupertino.dart';
5
+
6
+class PreSeedPage extends InfoPage {
7
+ PreSeedPage(this.seedPhraseLength);
8
+
9
+ final int seedPhraseLength;
10
+
11
+ @override
12
+ bool get onWillPop => false;
13
+
14
+ @override
15
+ String get pageTitle => S.current.pre_seed_title;
16
+
17
+ @override
18
+ String get pageDescription =>
19
+ S.current.pre_seed_description(seedPhraseLength.toString());
20
+
21
+ @override
22
+ String get buttonText => S.current.pre_seed_button_text;
23
+
24
+ @override
25
+ void Function(BuildContext) get onPressed => (BuildContext context) =>
26
+ Navigator.of(context).popAndPushNamed(Routes.seed, arguments: true);
27
+}
lib/src/screens/seed/warning_page.dart
deleted
-86
@@ -1,86 +0,0 @@
1
-import 'package:cake_wallet/utils/responsive_layout_util.dart';
2
-import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
3
-import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart';
4
-import 'package:cw_core/wallet_type.dart';
5
-import 'package:cake_wallet/src/screens/base_page.dart';
6
-import 'package:cake_wallet/src/widgets/primary_button.dart';
7
-import 'package:cake_wallet/generated/i18n.dart';
8
-import 'package:cake_wallet/routes.dart';
9
-import 'package:cake_wallet/themes/theme_base.dart';
10
-import 'package:flutter/material.dart';
11
-
12
-class WarningPage extends BasePage {
13
- WarningPage(this.seedPhraseLength)
14
- : isPreSeedPage = seedPhraseLength != null,
15
- imageLight = Image.asset('assets/images/pre_seed_light.png'),
16
- imageDark = Image.asset('assets/images/pre_seed_dark.png');
17
-
18
- final Image imageDark;
19
- final Image imageLight;
20
- final int? seedPhraseLength;
21
- final bool isPreSeedPage;
22
-
23
- @override
24
- Widget? leading(BuildContext context) =>
25
- isPreSeedPage ? null : super.leading(context);
26
-
27
- @override
28
- String? get title => S.current.pre_seed_title;
29
-
30
- @override
31
- Widget body(BuildContext context) {
32
- final image = currentTheme.type == ThemeType.dark ? imageDark : imageLight;
33
-
34
- return WillPopScope(
35
- onWillPop: () async => !isPreSeedPage,
36
- child: Container(
37
- alignment: Alignment.center,
38
- padding: EdgeInsets.all(24),
39
- child: ConstrainedBox(
40
- constraints: BoxConstraints(
41
- maxWidth: ResponsiveLayoutUtilBase.kDesktopMaxWidthConstraint),
42
- child: Column(
43
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
44
- children: <Widget>[
45
- Expanded(
46
- child: ConstrainedBox(
47
- constraints: BoxConstraints(
48
- maxHeight: MediaQuery.of(context).size.height * 0.3),
49
- child: AspectRatio(aspectRatio: 1, child: image),
50
- ),
51
- ),
52
- Expanded(
53
- child: Padding(
54
- padding: EdgeInsets.all(10),
55
- child: Text(
56
- isPreSeedPage
57
- ? S.of(context).pre_seed_description(
58
- seedPhraseLength.toString())
59
- : S.of(context).setup_warning_2fa_text,
60
- textAlign: TextAlign.center,
61
- style: TextStyle(
62
- height: 1.7,
63
- fontSize: 14,
64
- fontWeight: FontWeight.normal,
65
- color: Theme.of(context)
66
- .extension<CakeTextTheme>()!
67
- .secondaryTextColor)),
68
- ),
69
- ),
70
- PrimaryButton(
71
- onPressed: () => isPreSeedPage
72
- ? Navigator.of(context)
73
- .popAndPushNamed(Routes.seed, arguments: true)
74
- : Navigator.of(context)
75
- .popAndPushNamed(Routes.setup_2faPage),
76
- text: isPreSeedPage
77
- ? S.of(context).pre_seed_button_text
78
- : S.of(context).understand,
79
- color: Theme.of(context).primaryColor,
80
- textColor: Colors.white)
81
- ],
82
- ),
83
- ),
84
- ));
85
- }
86
-}
lib/src/screens/settings/security_backup_page.dart
+1
-1
@@ -108,7 +108,7 @@ class SecurityBackupPage extends BasePage {
108
context,
109
route: _securitySettingsViewModel.useTotp2FA
110
? Routes.modify2FAPage
111
- : Routes.warningPage,
111
+ : Routes.setup2faInfoPage,
112
conditionToDetermineIfToUse2FA: _securitySettingsViewModel
113
.shouldRequireTOTP2FAForAllSecurityAndBackupSettings,
114
),
lib/src/screens/setup_2fa/setup_2fa_info_page.dart
new
+20
@@ -0,0 +1,20 @@
1
+import 'package:cake_wallet/generated/i18n.dart';
2
+import 'package:cake_wallet/routes.dart';
3
+import 'package:cake_wallet/src/screens/InfoPage.dart';
4
+import 'package:flutter/cupertino.dart';
5
+
6
+class Setup2FAInfoPage extends InfoPage {
7
+
8
+ @override
9
+ String get pageTitle => S.current.pre_seed_title;
10
+
11
+ @override
12
+ String get pageDescription => S.current.setup_warning_2fa_text;
13
+
14
+ @override
15
+ String get buttonText => S.current.understand;
16
+
17
+ @override
18
+ void Function(BuildContext) get onPressed => (BuildContext context) =>
19
+ Navigator.of(context).popAndPushNamed(Routes.setup_2faPage);
20
+}