Add ESC keyboard shortcut to close email detail view
Adds the ability to close the email detail/thread detail view by pressing the ESC key, following the same pattern used for closing the composer. Changes: - Add closeThreadDetail to MailViewActionShortcutType enum - Map ESC key to closeThreadDetail in AppShortcutManager - Handle closeThreadDetail action in HandleMailShortcutActionsExtension Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,8 @@ class AppShortcutManager {
|
|||||||
return MailViewActionShortcutType.newMessage;
|
return MailViewActionShortcutType.newMessage;
|
||||||
} else if (keysPressed.isOnly(LogicalKeyboardKey.keyU)) {
|
} else if (keysPressed.isOnly(LogicalKeyboardKey.keyU)) {
|
||||||
return MailViewActionShortcutType.markAsUnread;
|
return MailViewActionShortcutType.markAsUnread;
|
||||||
|
} else if (keysPressed.isOnly(LogicalKeyboardKey.escape)) {
|
||||||
|
return MailViewActionShortcutType.closeThreadDetail;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ enum MailViewActionShortcutType {
|
|||||||
forward,
|
forward,
|
||||||
delete,
|
delete,
|
||||||
newMessage,
|
newMessage,
|
||||||
markAsUnread;
|
markAsUnread,
|
||||||
|
closeThreadDetail;
|
||||||
|
|
||||||
EmailActionType? getEmailActionType({
|
EmailActionType? getEmailActionType({
|
||||||
required PresentationEmail currentEmail,
|
required PresentationEmail currentEmail,
|
||||||
@@ -34,6 +35,8 @@ enum MailViewActionShortcutType {
|
|||||||
return EmailActionType.compose;
|
return EmailActionType.compose;
|
||||||
case MailViewActionShortcutType.markAsUnread:
|
case MailViewActionShortcutType.markAsUnread:
|
||||||
return EmailActionType.markAsUnread;
|
return EmailActionType.markAsUnread;
|
||||||
|
case MailViewActionShortcutType.closeThreadDetail:
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+7
@@ -9,6 +9,7 @@ import 'package:rxdart/rxdart.dart';
|
|||||||
import 'package:tmail_ui_user/features/base/shortcut/app_shortcut_manager.dart';
|
import 'package:tmail_ui_user/features/base/shortcut/app_shortcut_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/base/shortcut/mail/mail_view_action_shortcut_type.dart';
|
import 'package:tmail_ui_user/features/base/shortcut/mail/mail_view_action_shortcut_type.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/close_thread_detail_action.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/key_shortcut_extension.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/key_shortcut_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/model/mail_view_shortcut_action_view_event.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/model/mail_view_shortcut_action_view_event.dart';
|
||||||
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
|
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
|
||||||
@@ -64,6 +65,12 @@ extension HandleMailShortcutActionsExtension on ThreadDetailController {
|
|||||||
|
|
||||||
void handleMailShortcutAction(MailViewActionShortcutType shortcutType) {
|
void handleMailShortcutAction(MailViewActionShortcutType shortcutType) {
|
||||||
log('$runtimeType::handleMailShortcutAction:🔥ShortcutType: $shortcutType');
|
log('$runtimeType::handleMailShortcutAction:🔥ShortcutType: $shortcutType');
|
||||||
|
|
||||||
|
if (shortcutType == MailViewActionShortcutType.closeThreadDetail) {
|
||||||
|
closeThreadDetailAction();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final expandedEmail = currentExpandedEmail;
|
final expandedEmail = currentExpandedEmail;
|
||||||
|
|
||||||
if (expandedEmail == null) return;
|
if (expandedEmail == null) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user