diff --git a/lib/features/composer/presentation/extensions/email_action_type_extension.dart b/lib/features/composer/presentation/extensions/email_action_type_extension.dart index ad3b2d32a..99263639d 100644 --- a/lib/features/composer/presentation/extensions/email_action_type_extension.dart +++ b/lib/features/composer/presentation/extensions/email_action_type_extension.dart @@ -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: diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index d462a06ec..f591bdb19 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -263,18 +263,16 @@ class EmailView extends GetWidget { 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, diff --git a/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart b/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart index d2d18d70f..94f488475 100644 --- a/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart +++ b/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart @@ -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 && diff --git a/lib/features/search/email/presentation/extension/handle_email_more_action_extension.dart b/lib/features/search/email/presentation/extension/handle_email_more_action_extension.dart index caab1b86b..438831d6d 100644 --- a/lib/features/search/email/presentation/extension/handle_email_more_action_extension.dart +++ b/lib/features/search/email/presentation/extension/handle_email_more_action_extension.dart @@ -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, ]; diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index 4a8eb5043..edfdf1fc6 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -619,8 +619,14 @@ class ThreadView extends GetWidget 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,