From 187767dbdb8d5517658aa1cfab854e1ddd7b3137 Mon Sep 17 00:00:00 2001 From: Ethan Lee <125412902+ethan-tbd@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:07:24 -0700 Subject: [PATCH] feat: add modal folder (#190) --- lib/features/account/account_page.dart | 17 +++++++--- lib/features/currency/currency_dropdown.dart | 4 +-- .../modal_remove_item.dart} | 33 +++++-------------- .../modal_select_currency.dart} | 5 +-- lib/l10n/app_en.arb | 3 +- lib/l10n/app_localizations.dart | 6 ++++ lib/l10n/app_localizations_en.dart | 3 ++ 7 files changed, 38 insertions(+), 33 deletions(-) rename lib/features/{account/account_management_modal.dart => modals/modal_remove_item.dart} (70%) rename lib/features/{currency/currency_modal.dart => modals/modal_select_currency.dart} (96%) diff --git a/lib/features/account/account_page.dart b/lib/features/account/account_page.dart index dd99c12f..2cf49a64 100644 --- a/lib/features/account/account_page.dart +++ b/lib/features/account/account_page.dart @@ -1,6 +1,6 @@ import 'package:didpay/features/account/account_did_page.dart'; -import 'package:didpay/features/account/account_management_modal.dart'; import 'package:didpay/features/did/did_provider.dart'; +import 'package:didpay/features/modals/modal_remove_item.dart'; import 'package:didpay/features/pfis/add_pfi_page.dart'; import 'package:didpay/features/pfis/pfi.dart'; import 'package:didpay/features/pfis/pfis_notifier.dart'; @@ -149,7 +149,12 @@ class AccountPage extends HookConsumerWidget { ), child: const Center(child: Icon(Icons.attach_money)), ), - onTap: () => AccountManagementModal.show(context, ref, pfi: pfi), + onTap: () => ModalRemoveItem.show( + context, + pfi.did, + Loc.of(context).removePfi, + () async => ref.read(pfisProvider.notifier).remove(pfi), + ), ); Widget _buildAddPfiTile(BuildContext context) => ListTile( @@ -226,8 +231,12 @@ class AccountPage extends HookConsumerWidget { ), child: const Center(child: Icon(Icons.gpp_good)), ), - onTap: () => - AccountManagementModal.show(context, ref, credential: credential), + onTap: () => ModalRemoveItem.show( + context, + credential, + Loc.of(context).removeCredential, + () async => ref.read(vcsProvider.notifier).remove(credential), + ), ); Widget _buildNoCredentialsTile(BuildContext context) => ListTile( diff --git a/lib/features/currency/currency_dropdown.dart b/lib/features/currency/currency_dropdown.dart index 1c300171..f581d79c 100644 --- a/lib/features/currency/currency_dropdown.dart +++ b/lib/features/currency/currency_dropdown.dart @@ -1,4 +1,4 @@ -import 'package:didpay/features/currency/currency_modal.dart'; +import 'package:didpay/features/modals/modal_select_currency.dart'; import 'package:didpay/features/pfis/pfi.dart'; import 'package:didpay/features/transaction/transaction.dart'; import 'package:didpay/shared/theme/grid.dart'; @@ -31,7 +31,7 @@ class CurrencyDropdown extends HookConsumerWidget { backgroundColor: Colors.transparent, elevation: 0, ), - onPressed: () => CurrencyModal.show( + onPressed: () => ModalSelectCurrency.show( context, transactionType, selectedPfi, diff --git a/lib/features/account/account_management_modal.dart b/lib/features/modals/modal_remove_item.dart similarity index 70% rename from lib/features/account/account_management_modal.dart rename to lib/features/modals/modal_remove_item.dart index 1f557970..16efdd97 100644 --- a/lib/features/account/account_management_modal.dart +++ b/lib/features/modals/modal_remove_item.dart @@ -1,19 +1,15 @@ import 'package:auto_size_text/auto_size_text.dart'; -import 'package:didpay/features/pfis/pfi.dart'; -import 'package:didpay/features/pfis/pfis_notifier.dart'; -import 'package:didpay/features/vcs/vcs_notifier.dart'; import 'package:didpay/l10n/app_localizations.dart'; import 'package:didpay/shared/theme/grid.dart'; import 'package:flutter/material.dart'; -import 'package:hooks_riverpod/hooks_riverpod.dart'; -class AccountManagementModal { +class ModalRemoveItem { static Future show( BuildContext context, - WidgetRef ref, { - Pfi? pfi, - String? credential, - }) => + String title, + String removeText, + Future Function() onRemove, + ) => showModalBottomSheet( useSafeArea: true, isScrollControlled: true, @@ -34,7 +30,7 @@ class AccountManagementModal { children: [ Flexible( child: AutoSizeText( - pfi != null ? pfi.did : credential!, + title, style: Theme.of(context).textTheme.titleMedium, maxLines: 2, ), @@ -51,26 +47,15 @@ class AccountManagementModal { ListTile( title: Center( child: Text( - pfi != null - ? Loc.of(context).removePfi - : Loc.of(context).removeCredential, + removeText, style: TextStyle(color: Theme.of(context).colorScheme.error) .copyWith( fontWeight: FontWeight.bold, ), ), ), - onTap: () async { - pfi != null - ? await ref - .read(pfisProvider.notifier) - .remove(pfi) - .then((_) => Navigator.pop(context)) - : await ref - .read(vcsProvider.notifier) - .remove(credential!) - .then((_) => Navigator.pop(context)); - }, + onTap: () async => + onRemove().then((_) => Navigator.pop(context)), ), Divider( color: Theme.of(context) diff --git a/lib/features/currency/currency_modal.dart b/lib/features/modals/modal_select_currency.dart similarity index 96% rename from lib/features/currency/currency_modal.dart rename to lib/features/modals/modal_select_currency.dart index f5983d9e..f85e4992 100644 --- a/lib/features/currency/currency_modal.dart +++ b/lib/features/modals/modal_select_currency.dart @@ -1,10 +1,11 @@ import 'package:didpay/features/pfis/pfi.dart'; import 'package:didpay/features/transaction/transaction.dart'; +import 'package:didpay/l10n/app_localizations.dart'; import 'package:didpay/shared/theme/grid.dart'; import 'package:flutter/material.dart'; import 'package:tbdex/tbdex.dart'; -class CurrencyModal { +class ModalSelectCurrency { static Future show( BuildContext context, TransactionType transactionType, @@ -35,7 +36,7 @@ class CurrencyModal { Padding( padding: const EdgeInsets.symmetric(vertical: Grid.xs), child: Text( - 'Select currency', + Loc.of(context).selectCurrency, style: Theme.of(context).textTheme.titleMedium, textAlign: TextAlign.center, ), diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index acd91452..4d655a77 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -140,5 +140,6 @@ "identityVerificationComplete": "Identity verification complete!", "issuedCredentials": "Issued credentials", "removeCredential": "Remove credential", - "noCredentialsIssuedYet": "No credentials issued yet" + "noCredentialsIssuedYet": "No credentials issued yet", + "selectCurrency": "Select currency" } \ No newline at end of file diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 4aef26c0..c7b06a1d 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -750,6 +750,12 @@ abstract class Loc { /// In en, this message translates to: /// **'No credentials issued yet'** String get noCredentialsIssuedYet; + + /// No description provided for @selectCurrency. + /// + /// In en, this message translates to: + /// **'Select currency'** + String get selectCurrency; } class _LocDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 377fa226..0eff93e8 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -341,4 +341,7 @@ class LocEn extends Loc { @override String get noCredentialsIssuedYet => 'No credentials issued yet'; + + @override + String get selectCurrency => 'Select currency'; }