TF-3766 Make it easy to close context menu when open in email view

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-06-13 01:52:33 +07:00
committed by Dat H. Pham
parent 2d175633e7
commit 3bf839821e
5 changed files with 35 additions and 8 deletions
@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/base/widget/context_menu/context_menu_dialog_view.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';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -27,6 +28,9 @@ mixin PopupContextMenuActionMixin {
required OnContextMenuActionClick onContextMenuActionClick,
Key? key,
}) async {
if (PlatformInfo.isWeb) {
getBinding<MailboxDashBoardController>()?.isContextMenuOpened.value = true;
}
await showModalBottomSheet(
context: context,
showDragHandle: true,
@@ -53,7 +57,11 @@ mixin PopupContextMenuActionMixin {
),
);
},
);
).whenComplete(() {
if (PlatformInfo.isWeb) {
getBinding<MailboxDashBoardController>()?.isContextMenuOpened.value = false;
}
});
}
void openPopupMenuAction(
@@ -33,6 +33,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_loa
import 'package:tmail_ui_user/features/email/presentation/widgets/information_sender_and_receiver_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/mail_unsubscribed_banner.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/view_entire_message_with_message_clipped_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
@@ -412,10 +413,7 @@ class EmailView extends GetWidget<SingleEmailController> {
contentPadding: 0,
useDefaultFont: true,
),
if (controller.mailboxDashBoardController.isAttachmentDraggableAppActive ||
controller.mailboxDashBoardController.isLocalFileDraggableAppActive ||
controller.mailboxDashBoardController.isAppGridDialogDisplayed.isTrue ||
controller.mailboxDashBoardController.isDrawerOpened.isTrue)
if (controller.mailboxDashBoardController.isDisplayedOverlayViewOnIFrame)
PointerInterceptor(
child: SizedBox(
width: constraints.maxWidth,
@@ -1,6 +1,7 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/list/sliver_grid_delegate_fixed_height.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
@@ -10,7 +11,10 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosyst
extension OpenAppGridExtension on MailboxController {
void openAppGrid(List<AppLinagoraEcosystem> linagoraApps) {
log('OpenAppGridExtension::openAppGrid: length of linagoraApps = ${linagoraApps.length}');
mailboxDashBoardController.isAppGridDialogDisplayed.value = true;
if (PlatformInfo.isWeb) {
mailboxDashBoardController.isAppGridDialogDisplayed.value = true;
}
Get.dialog(
Center(
child: Dialog(
@@ -56,8 +60,11 @@ extension OpenAppGridExtension on MailboxController {
),
),
barrierColor: AppColor.blackAlpha20,
).whenComplete(() =>
mailboxDashBoardController.isAppGridDialogDisplayed.value = false);
).whenComplete(() {
if (PlatformInfo.isWeb) {
mailboxDashBoardController.isAppGridDialogDisplayed.value = false;
}
});
}
Future<void> _handleOpenApp(AppLinagoraEcosystem app) async {
@@ -265,6 +265,7 @@ class MailboxDashBoardController extends ReloadableController
final isSenderImportantFlagEnabled = RxBool(true);
final isAppGridDialogDisplayed = RxBool(false);
final isDrawerOpened = RxBool(false);
final isContextMenuOpened = RxBool(false);
Session? sessionCurrent;
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
@@ -0,0 +1,13 @@
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
extension VerifyDisplayOverlayViewOnIframeExtension
on MailboxDashBoardController {
bool get isDisplayedOverlayViewOnIFrame {
return isAttachmentDraggableAppActive ||
isLocalFileDraggableAppActive ||
isAppGridDialogDisplayed.isTrue ||
isDrawerOpened.isTrue ||
isContextMenuOpened.isTrue;
}
}