TF-3766 Remove MailboxDashboardController dependency in PopupContextMenuActionMixin

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-06-17 11:16:12 +07:00
committed by Dat H. Pham
parent ff2a8250a5
commit 7e22f5ddee
8 changed files with 86 additions and 30 deletions
@@ -0,0 +1,46 @@
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/features/base/widget/context_menu/context_menu_item_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
extension HandleOpenContextMenuExtension on MailboxDashBoardController {
Future<void> openBottomSheetContextMenu({
required BuildContext context,
required List<ContextMenuItemAction> itemActions,
required OnContextMenuActionClick onContextMenuActionClick,
Key? key,
}) {
if (PlatformInfo.isWeb) {
isContextMenuOpened.value = true;
}
return openBottomSheetContextMenuAction(
context: context,
itemActions: itemActions,
onContextMenuActionClick: onContextMenuActionClick,
key: key,
).whenComplete(() {
if (PlatformInfo.isWeb) {
isContextMenuOpened.value = false;
}
});
}
Future<void> openPopupMenu(
BuildContext context,
RelativeRect position,
List<PopupMenuEntry> popupMenuItems,
) {
if (PlatformInfo.isWeb) {
isPopupMenuOpened.value = true;
}
return openPopupMenuAction(
context,
position,
popupMenuItems,
).whenComplete(() {
if (PlatformInfo.isWeb) {
isPopupMenuOpened.value = false;
}
});
}
}
@@ -17,6 +17,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view_web.dar
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_drawer_changed_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_open_context_menu_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_profile_setting_action_type_click_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
@@ -464,7 +465,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
);
}).toList();
controller.openPopupMenuAction(context, buttonPosition, popupMenuItems);
controller.openPopupMenu(context, buttonPosition, popupMenuItems);
}
void _onDeleteFilterMessageOptionAction() {
@@ -725,7 +726,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
);
}).toList();
controller.openPopupMenuAction(context, position, popupMenuItems);
controller.openPopupMenu(context, position, popupMenuItems);
}
void _openPopupMenuSortFilter(BuildContext context, RelativeRect position) {
@@ -747,6 +748,6 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
);
}).toList();
controller.openPopupMenuAction(context, position, popupMenuItems);
controller.openPopupMenu(context, position, popupMenuItems);
}
}