From 61e3067c57f45d0a746270c00979c3a09bda44b9 Mon Sep 17 00:00:00 2001 From: hieubt Date: Wed, 20 Dec 2023 23:49:47 +0700 Subject: [PATCH] TF-2101 Add `recover_deleted_messages` to `context_menu` and trash view (cherry picked from commit f2e96e4a7bedc0616e688976248c555bbe9605e5) --- .../mixin/mailbox_widget_mixin.dart | 5 ++++- .../presentation/model/mailbox_actions.dart | 8 +++++++- .../mailbox_dashboard_view_web.dart | 20 +++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart index c8777b4a5..216966f64 100644 --- a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart +++ b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart @@ -35,7 +35,10 @@ mixin MailboxWidgetMixin { MailboxActions.openInNewTab, MailboxActions.newSubfolder, if (mailbox.isTrash) - MailboxActions.emptyTrash + ...[ + MailboxActions.emptyTrash, + MailboxActions.recoverDeletedMessages + ] else if (mailbox.isSpam) ...[ _mailboxActionForSpam(spamReportEnabled), diff --git a/lib/features/mailbox/presentation/model/mailbox_actions.dart b/lib/features/mailbox/presentation/model/mailbox_actions.dart index 4801b128b..722d55baa 100644 --- a/lib/features/mailbox/presentation/model/mailbox_actions.dart +++ b/lib/features/mailbox/presentation/model/mailbox_actions.dart @@ -23,7 +23,8 @@ enum MailboxActions { emptyTrash, emptySpam, newSubfolder, - confirmMailSpam; + confirmMailSpam, + recoverDeletedMessages; } extension MailboxActionsExtension on MailboxActions { @@ -71,6 +72,8 @@ extension MailboxActionsExtension on MailboxActions { return AppLocalizations.of(context).deleteAllSpamEmails; case MailboxActions.confirmMailSpam: return AppLocalizations.of(context).confirmAllEmailHereAreSpam; + case MailboxActions.recoverDeletedMessages: + return AppLocalizations.of(context).recoverDeletedMessages; default: return ''; } @@ -104,6 +107,8 @@ extension MailboxActionsExtension on MailboxActions { return imagePaths.icMailboxTrash; case MailboxActions.confirmMailSpam: return imagePaths.icMarkAsRead; + case MailboxActions.recoverDeletedMessages: + return imagePaths.icRecoverDeletedMessages; default: return ''; } @@ -177,6 +182,7 @@ extension MailboxActionsExtension on MailboxActions { case MailboxActions.emptyTrash: case MailboxActions.emptySpam: case MailboxActions.confirmMailSpam: + case MailboxActions.recoverDeletedMessages: return ContextMenuItemState.activated; case MailboxActions.markAsRead: return mailbox.countUnReadEmailsAsString.isNotEmpty 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 31acba818..185377744 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; +import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart'; import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; @@ -437,6 +438,25 @@ 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(), + ) + ], + ); + } else { + return const SizedBox.shrink(); + } + }) ]); }