TF-3911 Support mail keyboard shortcut actions in email list view on web
This commit is contained in:
@@ -157,4 +157,6 @@ class SynchronizeEmailSortOrderAction extends DashBoardAction {
|
||||
List<Object?> get props => [emailSortOrderType];
|
||||
}
|
||||
|
||||
class ReclaimMailListKeyboardShortcutFocusAction extends DashBoardAction {}
|
||||
class ReclaimMailListKeyboardShortcutFocusAction extends DashBoardAction {}
|
||||
|
||||
class ClearMailListKeyboardShortcutFocusAction extends DashBoardAction {}
|
||||
+2
-2
@@ -37,7 +37,7 @@ import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/restore_deleted_message_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/unsubscribe_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/bindings/email_interactor_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/bindings/email_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/repository/session_repository.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/usecases/store_session_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/identity_creator/data/datasource/identity_creator_data_source.dart';
|
||||
@@ -155,7 +155,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
SendingQueueBindings().dependencies();
|
||||
MailboxBindings().dependencies();
|
||||
ThreadBindings().dependencies();
|
||||
EmailInteractorBindings().dependencies();
|
||||
EmailBindings().dependencies();
|
||||
SearchEmailBindings().dependencies();
|
||||
QuotasBindings().dependencies();
|
||||
ThreadDetailBindings().dependencies();
|
||||
|
||||
+3
@@ -3286,6 +3286,9 @@ class MailboxDashBoardController extends ReloadableController
|
||||
bool get isEmailOpened =>
|
||||
dashboardRoute.value == DashboardRoutes.threadDetailed;
|
||||
|
||||
bool get isEmailListDisplayed =>
|
||||
dashboardRoute.value == DashboardRoutes.thread;
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
|
||||
+15
-2
@@ -1,6 +1,7 @@
|
||||
|
||||
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/action/dashboard_action.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';
|
||||
|
||||
@@ -14,7 +15,7 @@ extension HandleReactiveObxVariableExtension on MailboxDashBoardController {
|
||||
|
||||
searchInputFocusWorker = ever(
|
||||
searchController.isSearchInputFocused,
|
||||
_onSearchInputFocusChanged
|
||||
onSearchInputFocusChanged
|
||||
);
|
||||
}
|
||||
|
||||
@@ -22,13 +23,17 @@ extension HandleReactiveObxVariableExtension on MailboxDashBoardController {
|
||||
log('$runtimeType::_onAdvancedSearchVisibleChanged: visible is $visible | isEmailOpened = $isEmailOpened');
|
||||
if (isEmailOpened) {
|
||||
_performThreadDetailUIActionWhenEmailOpened(visible);
|
||||
} else if (isEmailListDisplayed) {
|
||||
_performDashboardUIActionWhenEmailListDisplayed(visible);
|
||||
}
|
||||
}
|
||||
|
||||
void _onSearchInputFocusChanged(bool focused) {
|
||||
void onSearchInputFocusChanged(bool focused) {
|
||||
log('$runtimeType::_onSearchInputFocusChanged: focused is $focused | isEmailOpened = $isEmailOpened');
|
||||
if (isEmailOpened) {
|
||||
_performThreadDetailUIActionWhenEmailOpened(focused);
|
||||
} else if (isEmailListDisplayed) {
|
||||
_performDashboardUIActionWhenEmailListDisplayed(focused);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +45,14 @@ extension HandleReactiveObxVariableExtension on MailboxDashBoardController {
|
||||
dispatchThreadDetailUIAction(emailAction);
|
||||
}
|
||||
|
||||
void _performDashboardUIActionWhenEmailListDisplayed(bool focused) {
|
||||
final dashboardAction = focused
|
||||
? ClearMailListKeyboardShortcutFocusAction()
|
||||
: ReclaimMailListKeyboardShortcutFocusAction();
|
||||
|
||||
dispatchAction(dashboardAction);
|
||||
}
|
||||
|
||||
void disposeReactiveObxVariableListener() {
|
||||
advancedSearchVisibleWorker?.dispose();
|
||||
advancedSearchVisibleWorker = null;
|
||||
|
||||
Reference in New Issue
Block a user