diff --git a/lib/features/base/mixin/popup_context_menu_action_mixin.dart b/lib/features/base/mixin/popup_context_menu_action_mixin.dart index e15a6f239..c92ae9ccd 100644 --- a/lib/features/base/mixin/popup_context_menu_action_mixin.dart +++ b/lib/features/base/mixin/popup_context_menu_action_mixin.dart @@ -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()?.isContextMenuOpened.value = true; + } await showModalBottomSheet( context: context, showDragHandle: true, @@ -53,7 +57,11 @@ mixin PopupContextMenuActionMixin { ), ); }, - ); + ).whenComplete(() { + if (PlatformInfo.isWeb) { + getBinding()?.isContextMenuOpened.value = false; + } + }); } void openPopupMenuAction( diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index 746dbaab7..2d661f6b7 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -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 { 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, diff --git a/lib/features/mailbox/presentation/extensions/open_app_grid_extension.dart b/lib/features/mailbox/presentation/extensions/open_app_grid_extension.dart index 056cb6819..1b611e510 100644 --- a/lib/features/mailbox/presentation/extensions/open_app_grid_extension.dart +++ b/lib/features/mailbox/presentation/extensions/open_app_grid_extension.dart @@ -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 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 _handleOpenApp(AppLinagoraEcosystem app) async { diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 4c21644a0..2c4c217c2 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -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 mapDefaultMailboxIdByRole = {}; diff --git a/lib/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart b/lib/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart new file mode 100644 index 000000000..1fad2db2b --- /dev/null +++ b/lib/features/mailbox_dashboard/presentation/extensions/verify_display_overlay_view_on_iframe_extension.dart @@ -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; + } +}