From f3aece1bfc8524d46489fed848195d70805b612a Mon Sep 17 00:00:00 2001 From: Damian Molinski Date: Wed, 2 Oct 2024 09:50:14 +0200 Subject: [PATCH 1/6] refactor: rename panel to be consistent with others --- .../registration/create_keychain/create_keychain_panel.dart | 4 ++-- ...s_panel.dart => seed_phrase_check_instructions_panel.dart} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename catalyst_voices/lib/pages/registration/create_keychain/stage/{check_seed_phrase_instructions_panel.dart => seed_phrase_check_instructions_panel.dart} (93%) diff --git a/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart index 32f8ec65dba..dc30b42c316 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart @@ -1,5 +1,5 @@ -import 'package:catalyst_voices/pages/registration/create_keychain/stage/check_seed_phrase_instructions_panel.dart'; import 'package:catalyst_voices/pages/registration/create_keychain/stage/instructions_panel.dart'; +import 'package:catalyst_voices/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart'; import 'package:catalyst_voices/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart'; import 'package:catalyst_voices/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart'; import 'package:catalyst_voices/pages/registration/create_keychain/stage/seed_phrase_panel.dart'; @@ -30,7 +30,7 @@ class CreateKeychainPanel extends StatelessWidget { isNextEnabled: seedPhraseState.isStoredConfirmed, ), CreateKeychainStage.checkSeedPhraseInstructions => - const CheckSeedPhraseInstructionsPanel(), + const SeedPhraseCheckInstructionsPanel(), CreateKeychainStage.checkSeedPhrase => SeedPhraseCheckPanel( seedPhrase: seedPhraseState.seedPhrase, ), diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/check_seed_phrase_instructions_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart similarity index 93% rename from catalyst_voices/lib/pages/registration/create_keychain/stage/check_seed_phrase_instructions_panel.dart rename to catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart index 2eb869852a5..ed46d3a3ac3 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/check_seed_phrase_instructions_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart @@ -4,8 +4,8 @@ import 'package:catalyst_voices_brands/catalyst_voices_brands.dart'; import 'package:catalyst_voices_localization/catalyst_voices_localization.dart'; import 'package:flutter/material.dart'; -class CheckSeedPhraseInstructionsPanel extends StatelessWidget { - const CheckSeedPhraseInstructionsPanel({ +class SeedPhraseCheckInstructionsPanel extends StatelessWidget { + const SeedPhraseCheckInstructionsPanel({ super.key, }); From 9cfe6238a2fe5d26fb7b163cfb90448d221054fa Mon Sep 17 00:00:00 2001 From: Damian Molinski Date: Wed, 2 Oct 2024 09:50:52 +0200 Subject: [PATCH 2/6] feat: allow wrong seed phrase order to go to results screen --- .../stage/seed_phrase_check_panel.dart | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart index a2db4f3561b..0e131c77a29 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart @@ -22,12 +22,14 @@ class _SeedPhraseCheckPanelState extends State { final _shuffledSeedPhraseWords = []; final _userWords = []; - bool get _isStageValid { - if (_seedPhraseWords.isEmpty) { - return false; - } + bool get _hasSeedPhraseWords => _seedPhraseWords.isNotEmpty; + + bool get _completedWordsSequence { + return _hasSeedPhraseWords && _userWords.length == _seedPhraseWords.length; + } - return listEquals(_seedPhraseWords, _userWords); + bool get _completedCorrectlyWordsSequence { + return _hasSeedPhraseWords && listEquals(_userWords, _seedPhraseWords); } @override @@ -68,7 +70,9 @@ class _SeedPhraseCheckPanelState extends State { ), ), const SizedBox(height: 10), - _Navigation(isNextEnabled: _isStageValid), + _Navigation( + isNextEnabled: _completedWordsSequence, + ), ], ); } @@ -108,9 +112,10 @@ class _SeedPhraseCheckPanelState extends State { ..clear() ..addAll(words); - RegistrationCubit.of(context).setSeedPhraseCheckConfirmed( - isConfirmed: _isStageValid, - ); + final isConfirmed = _completedCorrectlyWordsSequence; + + RegistrationCubit.of(context) + .setSeedPhraseCheckConfirmed(isConfirmed: isConfirmed); } } From 2117aa07fd4eee6821dade7ddb2df6b16b2b9782 Mon Sep 17 00:00:00 2001 From: Damian Molinski Date: Wed, 2 Oct 2024 10:03:39 +0200 Subject: [PATCH 3/6] feat: better error seed phrase messages --- .../stage/seed_phrase_check_panel.dart | 2 +- .../stage/seed_phrase_check_result_panel.dart | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart index c4751e516b1..81a2933a92e 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_panel.dart @@ -38,7 +38,7 @@ class _SeedPhraseCheckPanelState extends State { super.initState(); _updateSeedPhraseWords(); - _updateUserWords(_seedPhraseWords); + _updateUserWords(); } @override diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart index 754413a3a84..a060e957ffb 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart @@ -18,15 +18,22 @@ class SeedPhraseCheckResultPanel extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 24), + // TODO(damian-molinski): use correct strings when available. RegistrationStageMessage( - title: context.l10n.createKeychainSeedPhraseCheckSuccessTitle, - subtitle: context.l10n.createKeychainSeedPhraseCheckSuccessSubtitle, + title: isCheckConfirmed + ? context.l10n.createKeychainSeedPhraseCheckSuccessTitle + : 'Seed phrase words does not match!', + subtitle: isCheckConfirmed + ? context.l10n.createKeychainSeedPhraseCheckSuccessSubtitle + : 'Go back ana make sure order is correct', ), const Spacer(), - NextStep( - context.l10n.createKeychainSeedPhraseCheckSuccessNextStep, - ), - const SizedBox(height: 10), + if (isCheckConfirmed) ...[ + NextStep( + context.l10n.createKeychainSeedPhraseCheckSuccessNextStep, + ), + const SizedBox(height: 10), + ], RegistrationBackNextNavigation(isNextEnabled: isCheckConfirmed), ], ); From a7f275a355b888ae8c56628f29e0b9e34d56c137 Mon Sep 17 00:00:00 2001 From: Damian Molinski Date: Wed, 2 Oct 2024 10:17:03 +0200 Subject: [PATCH 4/6] feat: unlock password instructions panel --- .../create_keychain_panel.dart | 7 ++--- .../unlock_password_instructions_panel.dart | 27 +++++++++++++++++++ .../catalyst_voices_localizations.dart | 12 +++++++++ .../catalyst_voices_localizations_en.dart | 6 +++++ .../catalyst_voices_localizations_es.dart | 6 +++++ .../lib/l10n/intl_en.arb | 4 ++- 6 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart diff --git a/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart index dc30b42c316..7a52d1d9050 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/create_keychain_panel.dart @@ -4,6 +4,7 @@ import 'package:catalyst_voices/pages/registration/create_keychain/stage/seed_ph import 'package:catalyst_voices/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart'; import 'package:catalyst_voices/pages/registration/create_keychain/stage/seed_phrase_panel.dart'; import 'package:catalyst_voices/pages/registration/create_keychain/stage/splash_panel.dart'; +import 'package:catalyst_voices/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart'; import 'package:catalyst_voices/pages/registration/placeholder_panel.dart'; import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart'; import 'package:catalyst_voices_models/catalyst_voices_models.dart'; @@ -37,9 +38,9 @@ class CreateKeychainPanel extends StatelessWidget { CreateKeychainStage.checkSeedPhraseResult => SeedPhraseCheckResultPanel( isCheckConfirmed: seedPhraseState.isCheckConfirmed, ), - CreateKeychainStage.unlockPasswordInstructions || - CreateKeychainStage.unlockPasswordCreate => - const PlaceholderPanel(), + CreateKeychainStage.unlockPasswordInstructions => + const UnlockPasswordInstructionsPanel(), + CreateKeychainStage.unlockPasswordCreate => const PlaceholderPanel(), }; } } diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart new file mode 100644 index 00000000000..919b365edfa --- /dev/null +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart @@ -0,0 +1,27 @@ +import 'package:catalyst_voices/pages/registration/registration_stage_message.dart'; +import 'package:catalyst_voices/pages/registration/registration_stage_navigation.dart'; +import 'package:catalyst_voices_localization/catalyst_voices_localization.dart'; +import 'package:flutter/material.dart'; + +class UnlockPasswordInstructionsPanel extends StatelessWidget { + const UnlockPasswordInstructionsPanel({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const SizedBox(height: 24), + RegistrationStageMessage( + title: context.l10n.createKeychainSeedPhraseCheckInstructionsTitle, + subtitle: + context.l10n.createKeychainSeedPhraseCheckInstructionsSubtitle, + ), + const Spacer(), + const RegistrationBackNextNavigation(), + ], + ); + } +} diff --git a/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations.dart b/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations.dart index bbe83042708..3d45330bd03 100644 --- a/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations.dart +++ b/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations.dart @@ -1113,6 +1113,18 @@ abstract class VoicesLocalizations { /// In en, this message translates to: /// **'Now let’s set your Unlock password for this device!'** String get createKeychainSeedPhraseCheckSuccessNextStep; + + /// No description provided for @createKeychainUnlockPasswordInstructionsTitle. + /// + /// In en, this message translates to: + /// **'Set your Catalyst unlock password 
for this device'** + String get createKeychainUnlockPasswordInstructionsTitle; + + /// No description provided for @createKeychainUnlockPasswordInstructionsSubtitle. + /// + /// In en, this message translates to: + /// **'With over 300 trillion possible combinations, your 12 word seed phrase is great for keeping your account safe. 

But it can be a bit tedious to enter every single time you want to use the app. 

In this next step, you\'ll set your Unlock Password for your current device. It\'s like a shortcut for proving ownership of your Keychain. 

Whenever you recover your account for the first time on a new device, you\'ll need to use your Catalyst Keychain to get started. Every time after that, you can use your Unlock Password to quickly regain access.'** + String get createKeychainUnlockPasswordInstructionsSubtitle; } class _VoicesLocalizationsDelegate extends LocalizationsDelegate { diff --git a/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_en.dart b/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_en.dart index d226a79f52b..4b95551381b 100644 --- a/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_en.dart +++ b/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_en.dart @@ -572,4 +572,10 @@ class VoicesLocalizationsEn extends VoicesLocalizations { @override String get createKeychainSeedPhraseCheckSuccessNextStep => 'Now let’s set your Unlock password for this device!'; + + @override + String get createKeychainUnlockPasswordInstructionsTitle => 'Set your Catalyst unlock password 
for this device'; + + @override + String get createKeychainUnlockPasswordInstructionsSubtitle => 'With over 300 trillion possible combinations, your 12 word seed phrase is great for keeping your account safe. 

But it can be a bit tedious to enter every single time you want to use the app. 

In this next step, you\'ll set your Unlock Password for your current device. It\'s like a shortcut for proving ownership of your Keychain. 

Whenever you recover your account for the first time on a new device, you\'ll need to use your Catalyst Keychain to get started. Every time after that, you can use your Unlock Password to quickly regain access.'; } diff --git a/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_es.dart b/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_es.dart index 6bd06ae1e7e..87b8823f5d8 100644 --- a/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_es.dart +++ b/catalyst_voices/packages/catalyst_voices_localization/lib/generated/catalyst_voices_localizations_es.dart @@ -572,4 +572,10 @@ class VoicesLocalizationsEs extends VoicesLocalizations { @override String get createKeychainSeedPhraseCheckSuccessNextStep => 'Now let’s set your Unlock password for this device!'; + + @override + String get createKeychainUnlockPasswordInstructionsTitle => 'Set your Catalyst unlock password 
for this device'; + + @override + String get createKeychainUnlockPasswordInstructionsSubtitle => 'With over 300 trillion possible combinations, your 12 word seed phrase is great for keeping your account safe. 

But it can be a bit tedious to enter every single time you want to use the app. 

In this next step, you\'ll set your Unlock Password for your current device. It\'s like a shortcut for proving ownership of your Keychain. 

Whenever you recover your account for the first time on a new device, you\'ll need to use your Catalyst Keychain to get started. Every time after that, you can use your Unlock Password to quickly regain access.'; } diff --git a/catalyst_voices/packages/catalyst_voices_localization/lib/l10n/intl_en.arb b/catalyst_voices/packages/catalyst_voices_localization/lib/l10n/intl_en.arb index 3ac9476d1a8..323b35c44fb 100644 --- a/catalyst_voices/packages/catalyst_voices_localization/lib/l10n/intl_en.arb +++ b/catalyst_voices/packages/catalyst_voices_localization/lib/l10n/intl_en.arb @@ -649,5 +649,7 @@ "createKeychainSeedPhraseCheckSuccessTitle": "Nice job! You've successfully verified the seed phrase for your keychain.", "createKeychainSeedPhraseCheckSuccessSubtitle": "Enter your seed phrase to recover your Catalyst Keychain on any device.\u2028\u2028It's kinda like your email and password all rolled into one, so keep it somewhere safe!\u2028\u2028In the next step we’ll add a password to your Catalyst Keychain, so you can lock/unlock access to Voices.", "yourNextStep": "Your next step", - "createKeychainSeedPhraseCheckSuccessNextStep": "Now let’s set your Unlock password for this device!" + "createKeychainSeedPhraseCheckSuccessNextStep": "Now let’s set your Unlock password for this device!", + "createKeychainUnlockPasswordInstructionsTitle": "Set your Catalyst unlock password \u2028for this device", + "createKeychainUnlockPasswordInstructionsSubtitle": "With over 300 trillion possible combinations, your 12 word seed phrase is great for keeping your account safe. \u2028\u2028But it can be a bit tedious to enter every single time you want to use the app. \u2028\u2028In this next step, you'll set your Unlock Password for your current device. It's like a shortcut for proving ownership of your Keychain. \u2028\u2028Whenever you recover your account for the first time on a new device, you'll need to use your Catalyst Keychain to get started. Every time after that, you can use your Unlock Password to quickly regain access." } \ No newline at end of file From 8d26640de7ea4e4d4a7686ffcffa315115dfbfef Mon Sep 17 00:00:00 2001 From: Damian Molinski Date: Wed, 2 Oct 2024 10:30:38 +0200 Subject: [PATCH 5/6] feat: unlock password stages picture --- .../unlock_password_instructions_panel.dart | 15 ++++++++++----- .../registration/pictures/password_picture.dart | 17 +++++++++++++++++ .../registration/registration_info_panel.dart | 7 ++++--- 3 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 catalyst_voices/lib/pages/registration/pictures/password_picture.dart diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart index 919b365edfa..e161f421e01 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/unlock_password_instructions_panel.dart @@ -10,16 +10,21 @@ class UnlockPasswordInstructionsPanel extends StatelessWidget { @override Widget build(BuildContext context) { + final l10n = context.l10n; + return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 24), - RegistrationStageMessage( - title: context.l10n.createKeychainSeedPhraseCheckInstructionsTitle, - subtitle: - context.l10n.createKeychainSeedPhraseCheckInstructionsSubtitle, + Expanded( + child: SingleChildScrollView( + child: RegistrationStageMessage( + title: l10n.createKeychainUnlockPasswordInstructionsTitle, + subtitle: l10n.createKeychainUnlockPasswordInstructionsSubtitle, + ), + ), ), - const Spacer(), + const SizedBox(height: 10), const RegistrationBackNextNavigation(), ], ); diff --git a/catalyst_voices/lib/pages/registration/pictures/password_picture.dart b/catalyst_voices/lib/pages/registration/pictures/password_picture.dart new file mode 100644 index 00000000000..552fdd22209 --- /dev/null +++ b/catalyst_voices/lib/pages/registration/pictures/password_picture.dart @@ -0,0 +1,17 @@ +import 'package:catalyst_voices/pages/registration/pictures/task_picture.dart'; +import 'package:catalyst_voices_assets/catalyst_voices_assets.dart'; +import 'package:flutter/material.dart'; + +class PasswordPicture extends StatelessWidget { + const PasswordPicture({super.key}); + + @override + Widget build(BuildContext context) { + return TaskPicture( + child: TaskPictureIconBox( + type: TaskPictureType.error, + child: VoicesAssets.icons.lockClosed.buildIcon(size: 48), + ), + ); + } +} diff --git a/catalyst_voices/lib/pages/registration/registration_info_panel.dart b/catalyst_voices/lib/pages/registration/registration_info_panel.dart index 3e285d922b7..05ff377caa4 100644 --- a/catalyst_voices/lib/pages/registration/registration_info_panel.dart +++ b/catalyst_voices/lib/pages/registration/registration_info_panel.dart @@ -1,5 +1,6 @@ import 'package:catalyst_voices/pages/registration/information_panel.dart'; import 'package:catalyst_voices/pages/registration/pictures/keychain_picture.dart'; +import 'package:catalyst_voices/pages/registration/pictures/password_picture.dart'; import 'package:catalyst_voices/pages/registration/pictures/seed_phrase_picture.dart'; import 'package:catalyst_voices/pages/registration/pictures/task_picture.dart'; import 'package:catalyst_voices_blocs/catalyst_voices_blocs.dart'; @@ -66,9 +67,9 @@ class RegistrationInfoPanel extends StatelessWidget { subtitle: context.l10n.createKeychainSeedPhraseCheckSubtitle, body: context.l10n.createKeychainSeedPhraseCheckBody, ), - CreateKeychainStage.checkSeedPhraseResult => + CreateKeychainStage.checkSeedPhraseResult || + CreateKeychainStage.unlockPasswordInstructions => _HeaderStrings(title: context.l10n.catalystKeychain), - CreateKeychainStage.unlockPasswordInstructions || CreateKeychainStage.unlockPasswordCreate => _HeaderStrings(title: 'TODO'), }; @@ -138,7 +139,7 @@ class _RegistrationPicture extends StatelessWidget { ), CreateKeychainStage.unlockPasswordInstructions || CreateKeychainStage.unlockPasswordCreate => - const KeychainPicture(), + const PasswordPicture(), }; } From 0ea6106ced6c24037b32f15cd61276f94e34a916 Mon Sep 17 00:00:00 2001 From: Damian Molinski Date: Wed, 2 Oct 2024 10:35:44 +0200 Subject: [PATCH 6/6] refactor: scrollable panels content --- .../stage/instructions_panel.dart | 14 ++++++--- .../seed_phrase_check_instructions_panel.dart | 15 ++++++---- .../stage/seed_phrase_check_result_panel.dart | 30 ++++++++++--------- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/instructions_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/instructions_panel.dart index 4e5257ff24a..92ade85b885 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/instructions_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/instructions_panel.dart @@ -8,15 +8,21 @@ class InstructionsPanel extends StatelessWidget { @override Widget build(BuildContext context) { + final l10n = context.l10n; + return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 24), - RegistrationStageMessage( - title: context.l10n.accountInstructionsTitle, - subtitle: context.l10n.accountInstructionsMessage, + Expanded( + child: SingleChildScrollView( + child: RegistrationStageMessage( + title: l10n.accountInstructionsTitle, + subtitle: l10n.accountInstructionsMessage, + ), + ), ), - const Spacer(), + const SizedBox(height: 10), const RegistrationBackNextNavigation(), ], ); diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart index 85d20fb8053..15947ba6608 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_instructions_panel.dart @@ -10,16 +10,21 @@ class SeedPhraseCheckInstructionsPanel extends StatelessWidget { @override Widget build(BuildContext context) { + final l10n = context.l10n; + return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 24), - RegistrationStageMessage( - title: context.l10n.createKeychainSeedPhraseCheckInstructionsTitle, - subtitle: - context.l10n.createKeychainSeedPhraseCheckInstructionsSubtitle, + Expanded( + child: SingleChildScrollView( + child: RegistrationStageMessage( + title: l10n.createKeychainSeedPhraseCheckInstructionsTitle, + subtitle: l10n.createKeychainSeedPhraseCheckInstructionsSubtitle, + ), + ), ), - const Spacer(), + const SizedBox(height: 10), const RegistrationBackNextNavigation(), ], ); diff --git a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart index a060e957ffb..357a4714b4a 100644 --- a/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart +++ b/catalyst_voices/lib/pages/registration/create_keychain/stage/seed_phrase_check_result_panel.dart @@ -14,26 +14,28 @@ class SeedPhraseCheckResultPanel extends StatelessWidget { @override Widget build(BuildContext context) { + final l10n = context.l10n; + return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 24), // TODO(damian-molinski): use correct strings when available. - RegistrationStageMessage( - title: isCheckConfirmed - ? context.l10n.createKeychainSeedPhraseCheckSuccessTitle - : 'Seed phrase words does not match!', - subtitle: isCheckConfirmed - ? context.l10n.createKeychainSeedPhraseCheckSuccessSubtitle - : 'Go back ana make sure order is correct', - ), - const Spacer(), - if (isCheckConfirmed) ...[ - NextStep( - context.l10n.createKeychainSeedPhraseCheckSuccessNextStep, + Expanded( + child: SingleChildScrollView( + child: RegistrationStageMessage( + title: isCheckConfirmed + ? l10n.createKeychainSeedPhraseCheckSuccessTitle + : 'Seed phrase words does not match!', + subtitle: isCheckConfirmed + ? l10n.createKeychainSeedPhraseCheckSuccessSubtitle + : 'Go back ana make sure order is correct', + ), ), - const SizedBox(height: 10), - ], + ), + if (isCheckConfirmed) + NextStep(l10n.createKeychainSeedPhraseCheckSuccessNextStep), + const SizedBox(height: 10), RegistrationBackNextNavigation(isNextEnabled: isCheckConfirmed), ], );