TF-3911 Support mail keyboard shortcut actions in email detailed view on web
This commit is contained in:
+49
@@ -0,0 +1,49 @@
|
||||
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:get/get_rx/src/rx_workers/rx_workers.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
|
||||
|
||||
extension HandleReactiveObxVariableExtension on MailboxDashBoardController {
|
||||
|
||||
void registerReactiveObxVariableListener() {
|
||||
advancedSearchVisibleWorker = ever(
|
||||
searchController.isAdvancedSearchViewOpen,
|
||||
_onAdvancedSearchVisibleChanged
|
||||
);
|
||||
|
||||
searchInputFocusWorker = ever(
|
||||
searchController.isSearchInputFocused,
|
||||
_onSearchInputFocusChanged
|
||||
);
|
||||
}
|
||||
|
||||
void _onAdvancedSearchVisibleChanged(bool visible) {
|
||||
log('$runtimeType::_onAdvancedSearchVisibleChanged: visible is $visible | isEmailOpened = $isEmailOpened');
|
||||
if (isEmailOpened) {
|
||||
_performThreadDetailUIActionWhenEmailOpened(visible);
|
||||
}
|
||||
}
|
||||
|
||||
void _onSearchInputFocusChanged(bool focused) {
|
||||
log('$runtimeType::_onSearchInputFocusChanged: focused is $focused | isEmailOpened = $isEmailOpened');
|
||||
if (isEmailOpened) {
|
||||
_performThreadDetailUIActionWhenEmailOpened(focused);
|
||||
}
|
||||
}
|
||||
|
||||
void _performThreadDetailUIActionWhenEmailOpened(bool focused) {
|
||||
final emailAction = focused
|
||||
? ClearMailViewKeyboardShortcutFocusAction()
|
||||
: ReclaimMailViewKeyboardShortcutFocusAction();
|
||||
|
||||
dispatchThreadDetailUIAction(emailAction);
|
||||
}
|
||||
|
||||
void disposeReactiveObxVariableListener() {
|
||||
advancedSearchVisibleWorker?.dispose();
|
||||
advancedSearchVisibleWorker = null;
|
||||
searchInputFocusWorker?.dispose();
|
||||
searchInputFocusWorker = null;
|
||||
}
|
||||
}
|
||||
+5
@@ -11,8 +11,10 @@ import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'
|
||||
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/composer_arguments_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/thread_detail/presentation/action/thread_detail_ui_action.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
@@ -111,6 +113,9 @@ extension OpenAndCloseComposerExtension on MailboxDashBoardController {
|
||||
twakeAppManager.setHasComposer(false);
|
||||
}
|
||||
|
||||
dispatchThreadDetailUIAction(ReclaimMailViewKeyboardShortcutFocusAction());
|
||||
dispatchAction(ReclaimMailListKeyboardShortcutFocusAction());
|
||||
|
||||
_handleResultAfterCloseComposer(result);
|
||||
|
||||
if (composerId != null) {
|
||||
|
||||
Reference in New Issue
Block a user