From bf0030e7d71349cbc7b6d3fdb471905b62c28f78 Mon Sep 17 00:00:00 2001 From: hieubt Date: Wed, 20 Dec 2023 23:50:02 +0700 Subject: [PATCH] TF-2101 Handle open `recover_deleted_messages` (cherry picked from commit a58beb7a293471f39b080805c652c9d6f73dfe20) --- .../presentation/mailbox_controller.dart | 3 +++ .../mailbox_dashboard_controller.dart | 12 +++++++++++ .../mailbox_dashboard_view_web.dart | 20 +++++++++---------- lib/main/localizations/app_localizations.dart | 2 +- lib/main/pages/app_pages.dart | 10 ++++++++++ lib/main/routes/app_routes.dart | 1 + lib/main/routes/dialog_router.dart | 7 +++++++ 7 files changed, 43 insertions(+), 12 deletions(-) diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index b1ed437a8..7a2711ed8 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -1038,6 +1038,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM case MailboxActions.newSubfolder: goToCreateNewMailboxView(context, parentMailbox: mailbox); break; + case MailboxActions.recoverDeletedMessages: + mailboxDashBoardController.gotoEmailRecovery(); + break; default: break; } diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index f0bfff02d..fa8b4acdb 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -2426,6 +2426,18 @@ class MailboxDashBoardController extends ReloadableController { } } + void gotoEmailRecovery() async { + closeMailboxMenuDrawer(); + if (PlatformInfo.isWeb) { + await DialogRouter.pushGeneralDialog( + routeName: AppRoutes.emailRecovery, + arguments: {}, + ); + } else { + await push(AppRoutes.emailRecovery); + } + } + @override void onClose() { _emailReceiveManager.closeEmailReceiveManagerStream(); diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 185377744..99d4991c6 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -441,17 +441,15 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { Obx(() { final mailboxSelected = controller.selectedMailbox.value; if (mailboxSelected != null && mailboxSelected.role == PresentationMailbox.roleTrash) { - return Row( - children: [ - const SizedBox(width: 16), - TMailButtonWidget.fromIcon( - key: const Key('recover_deleted_messages_button'), - icon: controller.imagePaths.icRecoverDeletedMessages, - borderRadius: 10, - iconSize: 16, - onTapActionCallback: () => controller.gotoEmailRecovery(), - ) - ], + return Padding( + padding: const EdgeInsetsDirectional.only(start: 16), + child: TMailButtonWidget.fromIcon( + key: const Key('recover_deleted_messages_button'), + icon: controller.imagePaths.icRecoverDeletedMessages, + borderRadius: 10, + iconSize: 16, + onTapActionCallback: () => controller.gotoEmailRecovery(), + ), ); } else { return const SizedBox.shrink(); diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index cb845d30e..821df0873 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -3768,7 +3768,7 @@ class AppLocalizations { String get bannerProgressingRecoveryMessage { return Intl.message( - 'The recovery is in progress. You can continue using TeamMail', + 'The recovery is in progress. You can continue using TwakeMail', name: 'bannerProgressingRecoveryMessage', ); } diff --git a/lib/main/pages/app_pages.dart b/lib/main/pages/app_pages.dart index 4448b4e04..e13239bc9 100644 --- a/lib/main/pages/app_pages.dart +++ b/lib/main/pages/app_pages.dart @@ -8,6 +8,7 @@ import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart' import 'package:tmail_ui_user/features/contact/presentation/contact_bindings.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart' deferred as destination_picker; +import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_bindings.dart'; import 'package:tmail_ui_user/features/home/presentation/home_bindings.dart'; import 'package:tmail_ui_user/features/home/presentation/home_view.dart'; import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart' deferred as contact_view; @@ -32,6 +33,7 @@ import 'package:tmail_ui_user/main/pages/deferred_widget.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_view.dart' deferred as search_mailbox_view; import 'package:tmail_ui_user/features/mailto/presentation/mailto_url_view.dart' deferred as mailto_url_view; +import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_view.dart' deferred as email_recovery; class AppPages { static final pages = [ @@ -125,6 +127,14 @@ class AppPages { () => identity_creator.IdentityCreatorView() ), binding: IdentityCreatorBindings()), + GetPage( + name: AppRoutes.emailRecovery, + opaque: false, + page: () => DeferredWidget( + email_recovery.loadLibrary, + () => email_recovery.EmailRecoveryView() + ), + binding: EmailRecoveryBindings()), ] ]; diff --git a/lib/main/routes/app_routes.dart b/lib/main/routes/app_routes.dart index 27df7c61a..0b682d202 100644 --- a/lib/main/routes/app_routes.dart +++ b/lib/main/routes/app_routes.dart @@ -14,4 +14,5 @@ abstract class AppRoutes { static const unknownRoutePage = '/notfound'; static const searchMailbox = '/search_mailbox'; static const mailtoURL = '/mailto'; + static const emailRecovery = '/email_recovery'; } \ No newline at end of file diff --git a/lib/main/routes/dialog_router.dart b/lib/main/routes/dialog_router.dart index 5e315d643..76bf5f2e2 100644 --- a/lib/main/routes/dialog_router.dart +++ b/lib/main/routes/dialog_router.dart @@ -6,6 +6,8 @@ import 'package:tmail_ui_user/features/contact/presentation/contact_bindings.dar import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart'; +import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_bindings.dart'; +import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_view.dart'; import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart'; import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart'; import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_bindings.dart'; @@ -46,6 +48,9 @@ class DialogRouter { case AppRoutes.contact: ContactBindings().dependencies(); break; + case AppRoutes.emailRecovery: + EmailRecoveryBindings().dependencies(); + break; } } @@ -62,6 +67,8 @@ class DialogRouter { return DestinationPickerView(); case AppRoutes.contact: return const ContactView(); + case AppRoutes.emailRecovery: + return EmailRecoveryView(); default: return const SizedBox.shrink(); }