From ecc3cf81d4b4250319beb439713e9c67f60cc19a Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 16 Jun 2025 13:22:04 +0700 Subject: [PATCH] TF-3759 Display correct context menu for web responsive Signed-off-by: dab246 --- .../presentation/base_mailbox_view.dart | 30 ++++----- .../handle_mailbox_action_extension.dart | 63 ++++++------------- ...esktop_list_email_action_hover_widget.dart | 14 ++--- .../web_tablet_body_email_item_widget.dart | 18 ++---- 4 files changed, 41 insertions(+), 84 deletions(-) diff --git a/lib/features/mailbox/presentation/base_mailbox_view.dart b/lib/features/mailbox/presentation/base_mailbox_view.dart index ebcb11e70..18ffb242f 100644 --- a/lib/features/mailbox/presentation/base_mailbox_view.dart +++ b/lib/features/mailbox/presentation/base_mailbox_view.dart @@ -204,24 +204,18 @@ abstract class BaseMailboxView extends GetWidget context, mailboxNode.item, ), - onDragItemAccepted: PlatformInfo.isMobile - ? null - : controller.handleDragItemAccepted, - onMenuActionClick: PlatformInfo.isMobile - ? null - : (position, mailboxNode) { - return controller.openMailboxContextMenuAction( - context, - position, - mailboxNode.item, - ); - }, - onEmptyMailboxActionCallback: PlatformInfo.isMobile - ? null - : (mailboxNode) => controller.emptyMailboxAction( - context, - mailboxNode.item, - ), + onDragItemAccepted: controller.handleDragItemAccepted, + onMenuActionClick: (position, mailboxNode) { + return controller.openMailboxContextMenuAction( + context, + position, + mailboxNode.item, + ); + }, + onEmptyMailboxActionCallback: (mailboxNode) => controller.emptyMailboxAction( + context, + mailboxNode.item, + ), )); if (mailboxNode.hasChildren()) { diff --git a/lib/features/mailbox/presentation/extensions/handle_mailbox_action_extension.dart b/lib/features/mailbox/presentation/extensions/handle_mailbox_action_extension.dart index 9583ed01b..a51d28b5b 100644 --- a/lib/features/mailbox/presentation/extensions/handle_mailbox_action_extension.dart +++ b/lib/features/mailbox/presentation/extensions/handle_mailbox_action_extension.dart @@ -75,53 +75,30 @@ extension HandleMailboxActionExtension on MailboxController { final isSubAddressingSupported = session?.isSubAddressingSupported(accountId) ?? false; - if (responsiveUtils.isScreenWithShortestSide(context)) { - final contextMenuActions = listContextMenuItemAction( - mailbox, - mailboxDashBoardController.enableSpamReport, - deletedMessageVaultSupported, - isSubAddressingSupported, - imagePaths, - AppLocalizations.of(context), - ); + final popupMenuActions = getListPopupMenuItemAction( + AppLocalizations.of(context), + imagePaths, + mailbox, + mailboxDashBoardController.enableSpamReport, + deletedMessageVaultSupported, + isSubAddressingSupported, + ); - if (contextMenuActions.isEmpty) return Future.value(); + if (popupMenuActions.isEmpty) return Future.value(); - return openBottomSheetContextMenuAction( - context: context, - itemActions: contextMenuActions, - onContextMenuActionClick: (menuAction) => handleMailboxAction( - context, - menuAction.action, - mailbox, + final popupMenuItems = popupMenuActions.map((menuAction) { + return PopupMenuItem( + padding: EdgeInsets.zero, + child: PopupMenuItemActionWidget( + menuAction: menuAction, + menuActionClick: (menuAction) { + popBack(); + handleMailboxAction(context, menuAction.action, mailbox); + }, ), ); - } else { - final popupMenuActions = getListPopupMenuItemAction( - AppLocalizations.of(context), - imagePaths, - mailbox, - mailboxDashBoardController.enableSpamReport, - deletedMessageVaultSupported, - isSubAddressingSupported, - ); + }).toList(); - if (popupMenuActions.isEmpty) return Future.value(); - - final popupMenuItems = popupMenuActions.map((menuAction) { - return PopupMenuItem( - padding: EdgeInsets.zero, - child: PopupMenuItemActionWidget( - menuAction: menuAction, - menuActionClick: (menuAction) { - popBack(); - handleMailboxAction(context, menuAction.action, mailbox); - }, - ), - ); - }).toList(); - - return openPopupMenuAction(context, position, popupMenuItems); - } + return openPopupMenuAction(context, position, popupMenuItems); } } \ No newline at end of file diff --git a/lib/features/thread/presentation/widgets/desktop_list_email_action_hover_widget.dart b/lib/features/thread/presentation/widgets/desktop_list_email_action_hover_widget.dart index 44008621b..4693b8313 100644 --- a/lib/features/thread/presentation/widgets/desktop_list_email_action_hover_widget.dart +++ b/lib/features/thread/presentation/widgets/desktop_list_email_action_hover_widget.dart @@ -1,5 +1,4 @@ import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -39,7 +38,6 @@ class DesktopListEmailActionHoverWidget extends StatefulWidget { class _DesktopListEmailActionHoverWidgetState extends State with BaseEmailItemTile { final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); bool _popupMenuVisible = false; @@ -121,15 +119,11 @@ class _DesktopListEmailActionHoverWidgetState : Colors.transparent, tooltipMessage: AppLocalizations.of(context).more, onTapActionAtPositionCallback: (position) { - if (_responsiveUtils.isScreenWithShortestSide(context)) { - widget.onMoreActionClick?.call(widget.presentationEmail, null); - } else { - _onPopupMenuVisibleChange(true); + _onPopupMenuVisibleChange(true); - widget.onMoreActionClick - ?.call(widget.presentationEmail, position) - .whenComplete(() => _onPopupMenuVisibleChange(false)); - } + widget.onMoreActionClick + ?.call(widget.presentationEmail, position) + .whenComplete(() => _onPopupMenuVisibleChange(false)); }, ), const SizedBox(width: 16), diff --git a/lib/features/thread/presentation/widgets/web_tablet_body_email_item_widget.dart b/lib/features/thread/presentation/widgets/web_tablet_body_email_item_widget.dart index b1b9024a7..6d58f09cd 100644 --- a/lib/features/thread/presentation/widgets/web_tablet_body_email_item_widget.dart +++ b/lib/features/thread/presentation/widgets/web_tablet_body_email_item_widget.dart @@ -1,6 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -54,7 +53,6 @@ class WebTabletBodyEmailItemWidget extends StatefulWidget { class _WebTabletBodyEmailItemWidgetState extends State with BaseEmailItemTile { final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); bool _isHover = false; bool _popupMenuVisible = false; @@ -268,18 +266,12 @@ class _WebTabletBodyEmailItemWidgetState : Colors.transparent, tooltipMessage: AppLocalizations.of(context).more, onTapActionAtPositionCallback: (position) { - if (_responsiveUtils - .isScreenWithShortestSide(context)) { - widget.onMoreActionClick - ?.call(widget.presentationEmail, null); - } else { - _onPopupMenuVisibleChange(true); + _onPopupMenuVisibleChange(true); - widget.onMoreActionClick - ?.call(widget.presentationEmail, position) - .whenComplete( - () => _onPopupMenuVisibleChange(false)); - } + widget.onMoreActionClick + ?.call(widget.presentationEmail, position) + .whenComplete( + () => _onPopupMenuVisibleChange(false)); }, ) ],