TF-2101 Add recover_deleted_messages to context_menu and trash view

(cherry picked from commit f2e96e4a7bedc0616e688976248c555bbe9605e5)
This commit is contained in:
hieubt
2023-12-20 23:49:47 +07:00
committed by Dat H. Pham
parent 25cc14a188
commit 61e3067c57
3 changed files with 31 additions and 2 deletions
@@ -35,7 +35,10 @@ mixin MailboxWidgetMixin {
MailboxActions.openInNewTab, MailboxActions.openInNewTab,
MailboxActions.newSubfolder, MailboxActions.newSubfolder,
if (mailbox.isTrash) if (mailbox.isTrash)
MailboxActions.emptyTrash ...[
MailboxActions.emptyTrash,
MailboxActions.recoverDeletedMessages
]
else if (mailbox.isSpam) else if (mailbox.isSpam)
...[ ...[
_mailboxActionForSpam(spamReportEnabled), _mailboxActionForSpam(spamReportEnabled),
@@ -23,7 +23,8 @@ enum MailboxActions {
emptyTrash, emptyTrash,
emptySpam, emptySpam,
newSubfolder, newSubfolder,
confirmMailSpam; confirmMailSpam,
recoverDeletedMessages;
} }
extension MailboxActionsExtension on MailboxActions { extension MailboxActionsExtension on MailboxActions {
@@ -71,6 +72,8 @@ extension MailboxActionsExtension on MailboxActions {
return AppLocalizations.of(context).deleteAllSpamEmails; return AppLocalizations.of(context).deleteAllSpamEmails;
case MailboxActions.confirmMailSpam: case MailboxActions.confirmMailSpam:
return AppLocalizations.of(context).confirmAllEmailHereAreSpam; return AppLocalizations.of(context).confirmAllEmailHereAreSpam;
case MailboxActions.recoverDeletedMessages:
return AppLocalizations.of(context).recoverDeletedMessages;
default: default:
return ''; return '';
} }
@@ -104,6 +107,8 @@ extension MailboxActionsExtension on MailboxActions {
return imagePaths.icMailboxTrash; return imagePaths.icMailboxTrash;
case MailboxActions.confirmMailSpam: case MailboxActions.confirmMailSpam:
return imagePaths.icMarkAsRead; return imagePaths.icMarkAsRead;
case MailboxActions.recoverDeletedMessages:
return imagePaths.icRecoverDeletedMessages;
default: default:
return ''; return '';
} }
@@ -177,6 +182,7 @@ extension MailboxActionsExtension on MailboxActions {
case MailboxActions.emptyTrash: case MailboxActions.emptyTrash:
case MailboxActions.emptySpam: case MailboxActions.emptySpam:
case MailboxActions.confirmMailSpam: case MailboxActions.confirmMailSpam:
case MailboxActions.recoverDeletedMessages:
return ContextMenuItemState.activated; return ContextMenuItemState.activated;
case MailboxActions.markAsRead: case MailboxActions.markAsRead:
return mailbox.countUnReadEmailsAsString.isNotEmpty return mailbox.countUnReadEmailsAsString.isNotEmpty
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_portal/flutter_portal.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.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/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/composer/presentation/composer_view_web.dart';
import 'package:tmail_ui_user/features/email/presentation/email_view.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();
}
})
]); ]);
} }