TF-3911 Support mail keyboard shortcut actions in email detailed view on web
This commit is contained in:
@@ -97,6 +97,7 @@ import 'package:tmail_ui_user/features/email/presentation/extensions/attachment_
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_attendee_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_organizer_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/handle_open_attachment_list_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/handle_mail_action_by_shortcut_action_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/update_attendance_status_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/blob_calendar_event.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
@@ -441,6 +442,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
isDisplayAllAttachments: action.isDisplayAllAttachments,
|
||||
);
|
||||
mailboxDashBoardController.clearEmailUIAction();
|
||||
} else if (action is TriggerMailViewKeyboardShortcutAction) {
|
||||
handleMailActionByShortcutAction(
|
||||
actionType: action.actionType,
|
||||
email: action.email,
|
||||
);
|
||||
mailboxDashBoardController.clearEmailUIAction();
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -1255,7 +1262,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
}
|
||||
}
|
||||
|
||||
void moveToMailbox(BuildContext context, PresentationEmail email) async {
|
||||
void moveToMailbox(PresentationEmail email) async {
|
||||
if (session != null && accountId != null) {
|
||||
final moveActionRequest = await emailActionReactor.moveToMailbox(
|
||||
session!,
|
||||
@@ -1267,7 +1274,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
),
|
||||
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
||||
);
|
||||
if (!context.mounted || moveActionRequest == null) return;
|
||||
if (moveActionRequest == null) return;
|
||||
mailboxDashBoardController.moveToMailbox(
|
||||
session!,
|
||||
accountId!,
|
||||
@@ -1275,12 +1282,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
moveActionRequest.emailIdsWithReadStatus,
|
||||
);
|
||||
if (_threadDetailController?.emailIdsPresentation.length == 1) {
|
||||
_threadDetailController?.closeThreadDetailAction(context);
|
||||
_threadDetailController?.closeThreadDetailAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void moveToTrash(BuildContext context, PresentationEmail email) {
|
||||
void moveToTrash(PresentationEmail email) {
|
||||
if (session != null && accountId != null) {
|
||||
final moveActionRequest = emailActionReactor.moveToTrash(
|
||||
email,
|
||||
@@ -1289,7 +1296,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
||||
mapDefaultMailboxIdByRole: mailboxDashBoardController.mapDefaultMailboxIdByRole,
|
||||
);
|
||||
if (!context.mounted || moveActionRequest == null) return;
|
||||
if (moveActionRequest == null) return;
|
||||
mailboxDashBoardController.moveToMailbox(
|
||||
session!,
|
||||
accountId!,
|
||||
@@ -1297,12 +1304,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
moveActionRequest.emailIdsWithReadStatus,
|
||||
);
|
||||
if (_threadDetailController?.emailIdsPresentation.length == 1) {
|
||||
_threadDetailController?.closeThreadDetailAction(context);
|
||||
_threadDetailController?.closeThreadDetailAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void moveToSpam(BuildContext context, PresentationEmail email) {
|
||||
void moveToSpam(PresentationEmail email) {
|
||||
if (session != null && accountId != null) {
|
||||
final moveActionRequest = emailActionReactor.moveToSpam(
|
||||
email,
|
||||
@@ -1311,7 +1318,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
||||
mapDefaultMailboxIdByRole: mailboxDashBoardController.mapDefaultMailboxIdByRole,
|
||||
);
|
||||
if (!context.mounted || moveActionRequest == null) return;
|
||||
if (moveActionRequest == null) return;
|
||||
mailboxDashBoardController.moveToMailbox(
|
||||
session!,
|
||||
accountId!,
|
||||
@@ -1319,12 +1326,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
moveActionRequest.emailIdsWithReadStatus,
|
||||
);
|
||||
if (_threadDetailController?.emailIdsPresentation.length == 1) {
|
||||
_threadDetailController?.closeThreadDetailAction(context);
|
||||
_threadDetailController?.closeThreadDetailAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void unSpam(BuildContext context, PresentationEmail email) {
|
||||
void unSpam(PresentationEmail email) {
|
||||
if (session != null && accountId != null) {
|
||||
final moveActionRequest = emailActionReactor.unSpam(
|
||||
email,
|
||||
@@ -1333,7 +1340,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
isSearchEmailRunning: mailboxDashBoardController.searchController.isSearchEmailRunning,
|
||||
mapDefaultMailboxIdByRole: mailboxDashBoardController.mapDefaultMailboxIdByRole,
|
||||
);
|
||||
if (!context.mounted || moveActionRequest == null) return;
|
||||
if (moveActionRequest == null) return;
|
||||
mailboxDashBoardController.moveToMailbox(
|
||||
session!,
|
||||
accountId!,
|
||||
@@ -1341,7 +1348,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
moveActionRequest.emailIdsWithReadStatus,
|
||||
);
|
||||
if (_threadDetailController?.emailIdsPresentation.length == 1) {
|
||||
_threadDetailController?.closeThreadDetailAction(context);
|
||||
_threadDetailController?.closeThreadDetailAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1370,7 +1377,10 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
toastManager.showMessageSuccess(success);
|
||||
}
|
||||
|
||||
void handleEmailAction(BuildContext context, PresentationEmail presentationEmail, EmailActionType actionType) {
|
||||
void handleEmailAction(
|
||||
PresentationEmail presentationEmail,
|
||||
EmailActionType actionType,
|
||||
) {
|
||||
switch(actionType) {
|
||||
case EmailActionType.markAsUnread:
|
||||
if (session != null && accountId != null) {
|
||||
@@ -1403,31 +1413,31 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
}
|
||||
break;
|
||||
case EmailActionType.moveToMailbox:
|
||||
moveToMailbox(context, presentationEmail);
|
||||
moveToMailbox(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.moveToTrash:
|
||||
moveToTrash(context, presentationEmail);
|
||||
moveToTrash(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.deletePermanently:
|
||||
deleteEmailPermanently(context, presentationEmail);
|
||||
deleteEmailPermanently(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.moveToSpam:
|
||||
moveToSpam(context, presentationEmail);
|
||||
moveToSpam(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.unSpam:
|
||||
unSpam(context, presentationEmail);
|
||||
unSpam(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.createRule:
|
||||
quickCreatingRule(context, presentationEmail.from!.first);
|
||||
quickCreatingRule(presentationEmail.from!.first);
|
||||
break;
|
||||
case EmailActionType.unsubscribe:
|
||||
_unsubscribeEmail(context, presentationEmail);
|
||||
_unsubscribeEmail(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.archiveMessage:
|
||||
archiveMessage(context, presentationEmail);
|
||||
archiveMessage(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.printAll:
|
||||
_printEmail(context, presentationEmail);
|
||||
_printEmail(presentationEmail);
|
||||
break;
|
||||
case EmailActionType.downloadMessageAsEML:
|
||||
_downloadMessageAsEML(presentationEmail);
|
||||
@@ -1441,6 +1451,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
case EmailActionType.replyAll:
|
||||
case EmailActionType.replyToList:
|
||||
case EmailActionType.forward:
|
||||
case EmailActionType.compose:
|
||||
pressEmailAction(actionType, presentationEmail);
|
||||
break;
|
||||
default:
|
||||
@@ -1488,14 +1499,14 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
);
|
||||
}
|
||||
|
||||
void deleteEmailPermanently(BuildContext context, PresentationEmail email) {
|
||||
void deleteEmailPermanently(PresentationEmail email) {
|
||||
emailActionReactor.deleteEmailPermanently(
|
||||
email,
|
||||
onDeleteEmailRequest: (email) {
|
||||
popBack();
|
||||
mailboxDashBoardController.deleteEmailPermanently(email);
|
||||
if (_threadDetailController?.emailIdsPresentation.length == 1) {
|
||||
_threadDetailController?.closeThreadDetailAction(context);
|
||||
_threadDetailController?.closeThreadDetailAction();
|
||||
}
|
||||
},
|
||||
responsiveUtils: responsiveUtils,
|
||||
@@ -1689,7 +1700,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
}
|
||||
}
|
||||
|
||||
void quickCreatingRule(BuildContext context, EmailAddress emailAddress) async {
|
||||
void quickCreatingRule(EmailAddress emailAddress) {
|
||||
popBack();
|
||||
|
||||
if (accountId != null && session != null) {
|
||||
@@ -1782,7 +1793,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
threadDetailController?.isDisplayAllAttachments = false;
|
||||
}
|
||||
|
||||
void _unsubscribeEmail(BuildContext context, PresentationEmail presentationEmail) {
|
||||
void _unsubscribeEmail(PresentationEmail presentationEmail) {
|
||||
emailActionReactor.unsubscribeEmail(
|
||||
presentationEmail,
|
||||
emailUnsubscribe: emailUnsubscribe.value,
|
||||
@@ -1800,16 +1811,14 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
);
|
||||
}
|
||||
|
||||
void archiveMessage(BuildContext context, PresentationEmail email) {
|
||||
void archiveMessage(PresentationEmail email) {
|
||||
emailActionReactor.archiveMessage(
|
||||
email,
|
||||
onArchiveEmailRequest: (presentationEmail) {
|
||||
mailboxDashBoardController.archiveMessage(context, presentationEmail);
|
||||
},
|
||||
onArchiveEmailRequest: mailboxDashBoardController.archiveMessage,
|
||||
);
|
||||
}
|
||||
|
||||
void _printEmail(BuildContext context, PresentationEmail email) {
|
||||
void _printEmail(PresentationEmail email) {
|
||||
if (_printEmailButtonState == ButtonState.disabled) {
|
||||
log('SingleEmailController::_printEmail: Print email started');
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user