Cw 903 new screens for new shared seed wallets (#1967)

* Update seed verification flow for group wallets

* Update res/values/strings_en.arb [skip ci]

* Update res/values/strings_ko.arb [skip ci]

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
Serhii
2025-01-22 21:40:06 +02:00
committed by GitHub
co-authored by Omar Hatem
parent aef71d16f1
commit 5b9baf541b
35 changed files with 224 additions and 42 deletions
@@ -101,8 +101,14 @@ class _WalletNameFormState extends State<WalletNameForm> {
void initState() {
_stateReaction ??= reaction((_) => _walletNewVM.state, (ExecutionState state) async {
if (state is ExecutedSuccessfullyState) {
Navigator.of(navigatorKey.currentContext ?? context)
.pushNamed(Routes.preSeedPage, arguments: _walletNewVM.seedPhraseWordsLength);
if (widget.isChildWallet) {
Navigator.of(navigatorKey.currentContext ?? context)
.pushNamed(Routes.walletGroupExistingSeedDescriptionPage,
arguments: _walletNewVM.seedPhraseWordsLength);
} else {
Navigator.of(navigatorKey.currentContext ?? context)
.pushNamed(Routes.preSeedPage, arguments: _walletNewVM.seedPhraseWordsLength);
}
}
if (state is FailureState) {
@@ -7,6 +7,7 @@ import 'package:cake_wallet/themes/theme_base.dart';
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/themes/extensions/theme_type_images.dart';
class WalletGroupDescriptionPage extends BasePage {
WalletGroupDescriptionPage({required this.selectedWalletType});
@@ -25,10 +26,7 @@ class WalletGroupDescriptionPage extends BasePage {
padding: EdgeInsets.all(24),
child: Column(
children: [
Image.asset(
_getThemedWalletGroupImage(currentTheme.type),
height: 200,
),
Image.asset(currentTheme.type.walletGroupImage, height: 200),
SizedBox(height: 32),
Expanded(
child: Text.rich(
@@ -91,19 +89,4 @@ class WalletGroupDescriptionPage extends BasePage {
),
);
}
String _getThemedWalletGroupImage(ThemeType theme) {
final lightImage = 'assets/images/wallet_group_light.png';
final darkImage = 'assets/images/wallet_group_dark.png';
final brightImage = 'assets/images/wallet_group_bright.png';
switch (theme) {
case ThemeType.bright:
return brightImage;
case ThemeType.light:
return lightImage;
default:
return darkImage;
}
}
}
@@ -4,12 +4,13 @@ import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/screens/new_wallet/widgets/grouped_wallet_expansion_tile.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/theme_type_images.dart';
import 'package:cake_wallet/themes/theme_base.dart';
import 'package:cake_wallet/view_model/wallet_groups_display_view_model.dart';
import 'package:cw_core/wallet_type.dart';
import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import '../../../themes/extensions/cake_text_theme.dart';
class WalletGroupsDisplayPage extends BasePage {
WalletGroupsDisplayPage(this.walletGroupsDisplayViewModel);
@@ -165,10 +166,7 @@ class WalletGroupEmptyStateWidget extends StatelessWidget {
Widget build(BuildContext context) {
return Column(
children: [
Image.asset(
_getThemedWalletGroupImage(currentTheme.type),
scale: 1.8,
),
Image.asset(currentTheme.type.walletGroupImage, scale: 1.8),
SizedBox(height: 32),
Text.rich(
TextSpan(
@@ -194,19 +192,4 @@ class WalletGroupEmptyStateWidget extends StatelessWidget {
],
);
}
String _getThemedWalletGroupImage(ThemeType theme) {
final lightImage = 'assets/images/wallet_group_light.png';
final darkImage = 'assets/images/wallet_group_dark.png';
final brightImage = 'assets/images/wallet_group_bright.png';
switch (theme) {
case ThemeType.bright:
return brightImage;
case ThemeType.light:
return lightImage;
default:
return darkImage;
}
}
}
@@ -0,0 +1,106 @@
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/widgets/primary_button.dart';
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/theme_type_images.dart';
import 'package:cake_wallet/themes/theme_base.dart';
import 'package:flutter/material.dart';
class WalletGroupExistingSeedDescriptionPage extends BasePage {
WalletGroupExistingSeedDescriptionPage({required this.seedPhraseWordsLength});
final int seedPhraseWordsLength;
@override
String get title => S.current.wallet_group;
@override
Widget body(BuildContext context) {
final textStyle = TextStyle(
fontSize: 16,
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<CakeTextTheme>()!.secondaryTextColor,
);
return Container(
alignment: Alignment.center,
padding: EdgeInsets.all(24),
child: Column(
children: [
Image.asset(currentTheme.type.walletGroupImage, height: 200),
SizedBox(height: 32),
Expanded(
child: RichText(
text: TextSpan(
children: [
TextSpan(
text: S.current.wallet_group_description_existing_seed + '\n\n',
style: textStyle),
TextSpan(
text: S.current.wallet_group_description_open_wallet + '\n\n',
style: textStyle),
TextSpan(
text: S.current.wallet_group_description_view_seed + '\n', style: textStyle),
TextSpan(
text: S.current.seed_display_path,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w800,
color: Theme.of(context).extension<CakeTextTheme>()!.secondaryTextColor,
),
),
],
),
textAlign: TextAlign.center,
),
),
Column(
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Flexible(
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: PrimaryButton(
key: ValueKey(
'wallet_group_existing_seed_description_page_verify_seed_button_key'),
onPressed: () => Navigator.pushNamed(context, Routes.preSeedPage,
arguments: seedPhraseWordsLength),
text: S.current.verify_seed,
color: Theme.of(context).cardColor,
textColor: currentTheme.type == ThemeType.dark
? Theme.of(context).extension<DashboardPageTheme>()!.textColor
: Theme.of(context).extension<CakeTextTheme>()!.buttonTextColor,
),
),
),
Flexible(
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Builder(
builder: (context) => PrimaryButton(
key: ValueKey(
'wallet_group_existing_seed_description_page_open_wallet_button_key'),
onPressed: () {
Navigator.of(context).popUntil((route) => route.isFirst);
},
text: S.current.open_wallet,
color: Theme.of(context).primaryColor,
textColor: Colors.white,
),
),
),
)
],
),
SizedBox(height: 12),
],
)
],
),
);
}
}