TF-3963 Additional context menu actions for ThreadView and EmailView

This commit is contained in:
DatDang
2025-08-21 16:58:49 +07:00
committed by Dat H. Pham
parent 81c8ac9bfb
commit f1280c5de9
5 changed files with 24 additions and 8 deletions
@@ -158,6 +158,8 @@ extension EmailActionTypeExtension on EmailActionType {
return imagePaths.icOpenInNewTab;
case EmailActionType.printAll:
return imagePaths.icPrinter;
case EmailActionType.reply:
return imagePaths.icReply;
case EmailActionType.forward:
return imagePaths.icForward;
case EmailActionType.replyAll:
@@ -202,6 +204,8 @@ extension EmailActionTypeExtension on EmailActionType {
return appLocalizations.openInNewTab;
case EmailActionType.printAll:
return appLocalizations.print;
case EmailActionType.reply:
return appLocalizations.reply;
case EmailActionType.forward:
return appLocalizations.forward;
case EmailActionType.replyAll:
@@ -263,18 +263,16 @@ class EmailView extends GetWidget<SingleEmailController> {
username: controller.session?.username,
handleEmailAction: (email, action) => controller.handleEmailAction(context, email, action),
additionalActions: [
EmailActionType.reply,
EmailActionType.forward,
EmailActionType.replyAll,
EmailActionType.replyToList,
EmailActionType.printAll,
if (controller.responsiveUtils.isMobile(context))
EmailActionType.moveToMailbox,
if (!controller.responsiveUtils.isDesktop(context)) ...[
EmailActionType.markAsStarred,
EmailActionType.unMarkAsStarred,
EmailActionType.moveToTrash,
EmailActionType.deletePermanently,
],
EmailActionType.moveToMailbox,
EmailActionType.markAsStarred,
EmailActionType.unMarkAsStarred,
EmailActionType.moveToTrash,
EmailActionType.deletePermanently,
],
emailIsRead: presentationEmail.hasRead,
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
@@ -538,6 +538,8 @@ class EmailActionReactor {
if (currentContext == null) return;
final moreActions = [
if (additionalActions.contains(EmailActionType.reply))
EmailActionType.reply,
if (additionalActions.contains(EmailActionType.forward))
EmailActionType.forward,
if (presentationEmail.getCountMailAddressWithoutMe(username?.value ?? '') > 1 &&
@@ -18,8 +18,14 @@ extension HandleEmailMoreActionExtension on SearchEmailController {
final mailboxContain = presentationEmail.mailboxContain;
final isDrafts = mailboxContain?.isDrafts ?? false;
final isSpam = mailboxContain?.isSpam ?? false;
final isRead = presentationEmail.hasRead;
final isTrash = mailboxContain?.isTrash ?? false;
final canPermanentlyDelete = isDrafts || isSpam || isTrash;
final listEmailActions = [
isRead ? EmailActionType.markAsUnread : EmailActionType.markAsRead,
EmailActionType.moveToMailbox,
canPermanentlyDelete ? EmailActionType.deletePermanently : EmailActionType.moveToTrash,
isSpam ? EmailActionType.unSpam : EmailActionType.moveToSpam,
if (!isDrafts) EmailActionType.editAsNewEmail,
];
@@ -619,8 +619,14 @@ class ThreadView extends GetWidget<ThreadController>
final isSpam = mailboxContain?.isSpam ?? false;
final isArchive = mailboxContain?.isArchive ?? false;
final isTemplates = mailboxContain?.isTemplates ?? false;
final isRead = presentationEmail.hasRead;
final isTrash = mailboxContain?.isTrash ?? false;
final canPermanentlyDelete = isDrafts || isSpam || isTrash;
final listEmailActions = [
isRead ? EmailActionType.markAsUnread : EmailActionType.markAsRead,
EmailActionType.moveToMailbox,
canPermanentlyDelete ? EmailActionType.deletePermanently : EmailActionType.moveToTrash,
EmailActionType.openInNewTab,
if (!isDrafts && !isChildOfTeamMailboxes)
isSpam ? EmailActionType.unSpam : EmailActionType.moveToSpam,