From 969e7f2dcd040b2e92b7ef8428730c7b1349bc8f Mon Sep 17 00:00:00 2001 From: julian Date: Wed, 1 May 2024 17:36:07 -0600 Subject: [PATCH] simplify showing the frost flow steps qr code data --- .../new/steps/frost_create_step_2.dart | 29 ++----------- .../new/steps/frost_create_step_3.dart | 29 ++----------- .../reshare/frost_reshare_step_2abd.dart | 27 +++--------- .../reshare/frost_reshare_step_3abd.dart | 30 +++---------- .../reshare/frost_reshare_step_3c.dart | 31 +++---------- .../reshare/frost_reshare_step_4.dart | 30 +++---------- .../send_steps/frost_send_step_2.dart | 23 +++------- .../send_steps/frost_send_step_3.dart | 29 +++---------- .../frost_qr_dialog_button.dart | 43 +++++++++++++++++++ 9 files changed, 84 insertions(+), 187 deletions(-) create mode 100644 lib/widgets/custom_buttons/frost_qr_dialog_button.dart diff --git a/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_2.dart b/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_2.dart index a99d2b6db..181a7c3d6 100644 --- a/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_2.dart +++ b/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_2.dart @@ -1,20 +1,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/tx_v2/transaction_v2_details_view.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; import 'package:stackwallet/services/frost.dart'; -import 'package:stackwallet/themes/stack_colors.dart'; -import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/widgets/custom_buttons/checkbox_text_button.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; -import 'package:stackwallet/widgets/desktop/secondary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; -import 'package:stackwallet/widgets/dialogs/frost/frost_step_qr_dialog.dart'; import 'package:stackwallet/widgets/frost_step_user_steps.dart'; import 'package:stackwallet/widgets/stack_dialog.dart'; import 'package:stackwallet/widgets/textfields/frost_step_field.dart'; @@ -47,17 +43,6 @@ class _FrostCreateStep2State extends ConsumerState { final List fieldIsEmptyFlags = []; bool _userVerifyContinue = false; - Future _showQrCodeDialog() async { - await showDialog( - context: context, - builder: (_) => FrostStepQrDialog( - myName: ref.read(pFrostMyName)!, - title: "Step 2 of 5 - ${FrostCreateStep2.title}", - data: myCommitment, - ), - ); - } - @override void initState() { participants = Frost.getParticipants( @@ -115,16 +100,8 @@ class _FrostCreateStep2State extends ConsumerState { ), ), const SizedBox(height: 12), - SecondaryButton( - label: "View QR code", - icon: SvgPicture.asset( - Assets.svg.qrcode, - colorFilter: ColorFilter.mode( - Theme.of(context).extension()!.buttonTextSecondary, - BlendMode.srcIn, - ), - ), - onPressed: _showQrCodeDialog, + FrostQrDialogPopupButton( + data: myCommitment, ), const SizedBox(height: 12), for (int i = 0; i < participants.length; i++) diff --git a/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_3.dart b/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_3.dart index 72dd81410..782d86135 100644 --- a/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_3.dart +++ b/lib/pages/add_wallet_views/frost_ms/new/steps/frost_create_step_3.dart @@ -1,20 +1,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/tx_v2/transaction_v2_details_view.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; import 'package:stackwallet/services/frost.dart'; -import 'package:stackwallet/themes/stack_colors.dart'; -import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/widgets/custom_buttons/checkbox_text_button.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; -import 'package:stackwallet/widgets/desktop/secondary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; -import 'package:stackwallet/widgets/dialogs/frost/frost_step_qr_dialog.dart'; import 'package:stackwallet/widgets/frost_step_user_steps.dart'; import 'package:stackwallet/widgets/stack_dialog.dart'; import 'package:stackwallet/widgets/textfields/frost_step_field.dart'; @@ -46,17 +42,6 @@ class _FrostCreateStep3State extends ConsumerState { final List fieldIsEmptyFlags = []; - Future _showQrCodeDialog() async { - await showDialog( - context: context, - builder: (_) => FrostStepQrDialog( - myName: ref.read(pFrostMyName)!, - title: "Step 3 of 5 - ${FrostCreateStep3.title}", - data: myShare, - ), - ); - } - @override void initState() { participants = Frost.getParticipants( @@ -114,16 +99,8 @@ class _FrostCreateStep3State extends ConsumerState { ), ), const SizedBox(height: 12), - SecondaryButton( - label: "View QR code", - icon: SvgPicture.asset( - Assets.svg.qrcode, - colorFilter: ColorFilter.mode( - Theme.of(context).extension()!.buttonTextSecondary, - BlendMode.srcIn, - ), - ), - onPressed: _showQrCodeDialog, + FrostQrDialogPopupButton( + data: myShare, ), const SizedBox(height: 12), for (int i = 0; i < participants.length; i++) diff --git a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_2abd.dart b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_2abd.dart index e6c7a70ee..63edc03cf 100644 --- a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_2abd.dart +++ b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_2abd.dart @@ -2,17 +2,16 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:qr_flutter/qr_flutter.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/transaction_details_view.dart'; import 'package:stackwallet/providers/db/main_db_provider.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; import 'package:stackwallet/services/frost.dart'; -import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/wallets/isar/models/frost_wallet_info.dart'; import 'package:stackwallet/widgets/custom_buttons/checkbox_text_button.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; @@ -151,26 +150,6 @@ class _FrostReshareStep2abdState extends ConsumerState { padding: const EdgeInsets.all(16), child: Column( children: [ - SizedBox( - height: 220, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - QrImageView( - data: myResharerStart, - size: 220, - backgroundColor: - Theme.of(context).extension()!.background, - foregroundColor: Theme.of(context) - .extension()! - .accentColorDark, - ), - ], - ), - ), - const SizedBox( - height: 12, - ), DetailItem( title: "My resharer", detail: myResharerStart, @@ -182,6 +161,10 @@ class _FrostReshareStep2abdState extends ConsumerState { data: myResharerStart, ), ), + const SizedBox(height: 12), + FrostQrDialogPopupButton( + data: myResharerStart, + ), const SizedBox( height: 12, ), diff --git a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3abd.dart b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3abd.dart index 145ceb72b..050baa3e8 100644 --- a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3abd.dart +++ b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3abd.dart @@ -2,15 +2,14 @@ import 'dart:ffi'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:qr_flutter/qr_flutter.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/transaction_details_view.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; import 'package:stackwallet/services/frost.dart'; -import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/widgets/custom_buttons/checkbox_text_button.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; @@ -134,28 +133,6 @@ class _FrostReshareStep3abdState extends ConsumerState { padding: const EdgeInsets.all(16), child: Column( children: [ - if (!amOutgoingParticipant) - SizedBox( - height: 220, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - QrImageView( - data: myEncryptionKey!, - size: 220, - backgroundColor: - Theme.of(context).extension()!.background, - foregroundColor: Theme.of(context) - .extension()! - .accentColorDark, - ), - ], - ), - ), - if (!amOutgoingParticipant) - const SizedBox( - height: 12, - ), if (!amOutgoingParticipant) DetailItem( title: "My encryption key", @@ -168,6 +145,11 @@ class _FrostReshareStep3abdState extends ConsumerState { data: myEncryptionKey!, ), ), + if (!amOutgoingParticipant) const SizedBox(height: 12), + if (!amOutgoingParticipant) + FrostQrDialogPopupButton( + data: myEncryptionKey!, + ), if (!amOutgoingParticipant) const SizedBox( height: 12, diff --git a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3c.dart b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3c.dart index 3e129604a..3bde7bc76 100644 --- a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3c.dart +++ b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_3c.dart @@ -1,12 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:qr_flutter/qr_flutter.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/transaction_details_view.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; -import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/widgets/custom_buttons/checkbox_text_button.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; @@ -30,29 +29,6 @@ class _FrostReshareStep3cState extends ConsumerState { padding: const EdgeInsets.all(16), child: Column( children: [ - SizedBox( - height: 220, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - QrImageView( - data: ref - .watch(pFrostResharingData) - .startResharedData! - .resharedStart, - size: 220, - backgroundColor: - Theme.of(context).extension()!.background, - foregroundColor: Theme.of(context) - .extension()! - .accentColorDark, - ), - ], - ), - ), - const SizedBox( - height: 16, - ), DetailItem( title: "My encryption key", detail: @@ -71,6 +47,11 @@ class _FrostReshareStep3cState extends ConsumerState { .resharedStart, ), ), + const SizedBox(height: 12), + FrostQrDialogPopupButton( + data: + ref.watch(pFrostResharingData).startResharedData!.resharedStart, + ), if (!Util.isDesktop) const Spacer(), const SizedBox( height: 16, diff --git a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_4.dart b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_4.dart index f60dd29f9..973dc99d7 100644 --- a/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_4.dart +++ b/lib/pages/add_wallet_views/frost_ms/reshare/frost_reshare_step_4.dart @@ -2,7 +2,6 @@ import 'dart:ffi'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:qr_flutter/qr_flutter.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/transaction_details_view.dart'; import 'package:stackwallet/pages/wallet_view/wallet_view.dart'; @@ -10,11 +9,11 @@ import 'package:stackwallet/pages_desktop_specific/my_stack_view/wallet_view/des import 'package:stackwallet/providers/db/main_db_provider.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; import 'package:stackwallet/services/frost.dart'; -import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/wallets/isar/models/frost_wallet_info.dart'; import 'package:stackwallet/widgets/custom_buttons/checkbox_text_button.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; @@ -168,28 +167,6 @@ class _FrostReshareStep4State extends ConsumerState { padding: const EdgeInsets.all(16), child: Column( children: [ - if (myResharerComplete != null) - SizedBox( - height: 220, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - QrImageView( - data: myResharerComplete!, - size: 220, - backgroundColor: - Theme.of(context).extension()!.background, - foregroundColor: Theme.of(context) - .extension()! - .accentColorDark, - ), - ], - ), - ), - if (myResharerComplete != null) - const SizedBox( - height: 16, - ), if (myResharerComplete != null) DetailItem( title: "My resharer complete", @@ -202,6 +179,11 @@ class _FrostReshareStep4State extends ConsumerState { data: myResharerComplete!, ), ), + if (myResharerComplete != null) const SizedBox(height: 12), + if (myResharerComplete != null) + FrostQrDialogPopupButton( + data: myResharerComplete!, + ), if (!amOutgoingParticipant) const SizedBox( height: 16, diff --git a/lib/pages/send_view/frost_ms/send_steps/frost_send_step_2.dart b/lib/pages/send_view/frost_ms/send_steps/frost_send_step_2.dart index 06394c2a6..782783911 100644 --- a/lib/pages/send_view/frost_ms/send_steps/frost_send_step_2.dart +++ b/lib/pages/send_view/frost_ms/send_steps/frost_send_step_2.dart @@ -2,7 +2,6 @@ import 'package:barcode_scan2/barcode_scan2.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:qr_flutter/qr_flutter.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/transaction_details_view.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; @@ -14,6 +13,7 @@ import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/wallets/wallet/impl/bitcoin_frost_wallet.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; @@ -161,23 +161,6 @@ class _FrostSendStep2State extends ConsumerState { ], ), ), - SizedBox( - height: 220, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - QrImageView( - data: myPreprocess, - size: 220, - backgroundColor: - Theme.of(context).extension()!.background, - foregroundColor: Theme.of(context) - .extension()! - .accentColorDark, - ), - ], - ), - ), const SizedBox( height: 12, ), @@ -199,6 +182,10 @@ class _FrostSendStep2State extends ConsumerState { data: myPreprocess, ), ), + const SizedBox(height: 12), + FrostQrDialogPopupButton( + data: myPreprocess, + ), const SizedBox( height: 12, ), diff --git a/lib/pages/send_view/frost_ms/send_steps/frost_send_step_3.dart b/lib/pages/send_view/frost_ms/send_steps/frost_send_step_3.dart index 25a39b13b..e606eb307 100644 --- a/lib/pages/send_view/frost_ms/send_steps/frost_send_step_3.dart +++ b/lib/pages/send_view/frost_ms/send_steps/frost_send_step_3.dart @@ -2,18 +2,17 @@ import 'package:barcode_scan2/barcode_scan2.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:qr_flutter/qr_flutter.dart'; import 'package:stackwallet/frost_route_generator.dart'; import 'package:stackwallet/pages/wallet_view/transaction_views/transaction_details_view.dart'; import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; import 'package:stackwallet/providers/global/wallets_provider.dart'; import 'package:stackwallet/services/frost.dart'; -import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/constants.dart'; import 'package:stackwallet/utilities/logger.dart'; import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/wallets/wallet/impl/bitcoin_frost_wallet.dart'; +import 'package:stackwallet/widgets/custom_buttons/frost_qr_dialog_button.dart'; import 'package:stackwallet/widgets/custom_buttons/simple_copy_button.dart'; import 'package:stackwallet/widgets/desktop/primary_button.dart'; import 'package:stackwallet/widgets/detail_item.dart'; @@ -94,26 +93,6 @@ class _FrostSendStep3State extends ConsumerState { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - SizedBox( - height: 220, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - QrImageView( - data: myShare, - size: 220, - backgroundColor: - Theme.of(context).extension()!.background, - foregroundColor: Theme.of(context) - .extension()! - .accentColorDark, - ), - ], - ), - ), - const SizedBox( - height: 12, - ), DetailItem( title: "My name", detail: myName, @@ -135,6 +114,12 @@ class _FrostSendStep3State extends ConsumerState { const SizedBox( height: 12, ), + FrostQrDialogPopupButton( + data: myShare, + ), + const SizedBox( + height: 12, + ), Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/widgets/custom_buttons/frost_qr_dialog_button.dart b/lib/widgets/custom_buttons/frost_qr_dialog_button.dart new file mode 100644 index 000000000..0b63f097e --- /dev/null +++ b/lib/widgets/custom_buttons/frost_qr_dialog_button.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:stackwallet/frost_route_generator.dart'; +import 'package:stackwallet/providers/frost_wallet/frost_wallet_providers.dart'; +import 'package:stackwallet/themes/stack_colors.dart'; +import 'package:stackwallet/utilities/assets.dart'; +import 'package:stackwallet/widgets/desktop/secondary_button.dart'; +import 'package:stackwallet/widgets/dialogs/frost/frost_step_qr_dialog.dart'; + +class FrostQrDialogPopupButton extends ConsumerWidget { + const FrostQrDialogPopupButton({super.key, required this.data}); + + final String data; + + @override + Widget build(BuildContext context, WidgetRef ref) { + return SecondaryButton( + label: "View QR code", + icon: SvgPicture.asset( + Assets.svg.qrcode, + colorFilter: ColorFilter.mode( + Theme.of(context).extension()!.buttonTextSecondary, + BlendMode.srcIn, + ), + ), + onPressed: () async { + await showDialog( + context: context, + builder: (_) => FrostStepQrDialog( + myName: ref.read(pFrostMyName)!, + title: "Step " + "${ref.read(pFrostCreateCurrentStep)}" + " of " + "${ref.read(pFrostScaffoldArgs)!.stepRoutes.length}" + " - ${ref.read(pFrostScaffoldArgs)!.stepRoutes[ref.watch(pFrostCreateCurrentStep) - 1].title}", + data: data, + ), + ); + }, + ); + } +}