TF-3911 Support mail keyboard shortcut actions in email searched list view on web desktop

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-08-04 11:58:48 +07:00
committed by Dat H. Pham
parent 6c86682111
commit d61468e73b
3 changed files with 61 additions and 3 deletions
@@ -2,6 +2,7 @@
import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/list_presentation_email_extension.dart';
import 'package:model/extensions/presentation_email_extension.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
@@ -13,7 +14,7 @@ enum MailListActionShortcutType {
EmailActionType? getEmailActionType({
required List<PresentationEmail> selectedEmails,
PresentationMailbox? selectedMailbox,
required PresentationMailbox selectedMailbox,
}) {
if (selectedEmails.isEmpty &&
this != MailListActionShortcutType.newMessage) {
@@ -22,7 +23,35 @@ enum MailListActionShortcutType {
switch(this) {
case MailListActionShortcutType.delete:
return selectedMailbox?.isDeletePermanentlyEnabled == true
return selectedMailbox.isDeletePermanentlyEnabled == true
? EmailActionType.deletePermanently
: EmailActionType.moveToTrash;
case MailListActionShortcutType.newMessage:
return EmailActionType.compose;
case MailListActionShortcutType.markAsRead:
return selectedEmails.isAllEmailRead
? null
: EmailActionType.markAsRead;
case MailListActionShortcutType.markAsUnread:
return selectedEmails.isAllEmailUnread
? null
: EmailActionType.markAsUnread;
}
}
EmailActionType? getEmailActionTypeBySearch({
required List<PresentationEmail> selectedEmails,
}) {
if (selectedEmails.isEmpty &&
this != MailListActionShortcutType.newMessage) {
return null;
}
switch(this) {
case MailListActionShortcutType.delete:
final isDeletePermanentlyEnabled =
selectedEmails.every((e) => e.isDeletePermanentlyEnabled);
return isDeletePermanentlyEnabled
? EmailActionType.deletePermanently
: EmailActionType.moveToTrash;
case MailListActionShortcutType.newMessage: