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:
@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:pointer_interceptor/pointer_interceptor.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_dialog_view.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/context_menu/context_menu_item_action.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/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
@@ -27,6 +28,9 @@ mixin PopupContextMenuActionMixin {
|
|||||||
required OnContextMenuActionClick onContextMenuActionClick,
|
required OnContextMenuActionClick onContextMenuActionClick,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) async {
|
}) async {
|
||||||
|
if (PlatformInfo.isWeb) {
|
||||||
|
getBinding<MailboxDashBoardController>()?.isContextMenuOpened.value = true;
|
||||||
|
}
|
||||||
await showModalBottomSheet(
|
await showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
showDragHandle: true,
|
showDragHandle: true,
|
||||||
@@ -53,7 +57,11 @@ mixin PopupContextMenuActionMixin {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
).whenComplete(() {
|
||||||
|
if (PlatformInfo.isWeb) {
|
||||||
|
getBinding<MailboxDashBoardController>()?.isContextMenuOpened.value = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void openPopupMenuAction(
|
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/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/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/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/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/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
@@ -412,10 +413,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
contentPadding: 0,
|
contentPadding: 0,
|
||||||
useDefaultFont: true,
|
useDefaultFont: true,
|
||||||
),
|
),
|
||||||
if (controller.mailboxDashBoardController.isAttachmentDraggableAppActive ||
|
if (controller.mailboxDashBoardController.isDisplayedOverlayViewOnIFrame)
|
||||||
controller.mailboxDashBoardController.isLocalFileDraggableAppActive ||
|
|
||||||
controller.mailboxDashBoardController.isAppGridDialogDisplayed.isTrue ||
|
|
||||||
controller.mailboxDashBoardController.isDrawerOpened.isTrue)
|
|
||||||
PointerInterceptor(
|
PointerInterceptor(
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: constraints.maxWidth,
|
width: constraints.maxWidth,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/views/list/sliver_grid_delegate_fixed_height.dart';
|
import 'package:core/presentation/views/list/sliver_grid_delegate_fixed_height.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.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 {
|
extension OpenAppGridExtension on MailboxController {
|
||||||
void openAppGrid(List<AppLinagoraEcosystem> linagoraApps) {
|
void openAppGrid(List<AppLinagoraEcosystem> linagoraApps) {
|
||||||
log('OpenAppGridExtension::openAppGrid: length of linagoraApps = ${linagoraApps.length}');
|
log('OpenAppGridExtension::openAppGrid: length of linagoraApps = ${linagoraApps.length}');
|
||||||
mailboxDashBoardController.isAppGridDialogDisplayed.value = true;
|
if (PlatformInfo.isWeb) {
|
||||||
|
mailboxDashBoardController.isAppGridDialogDisplayed.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
Get.dialog(
|
Get.dialog(
|
||||||
Center(
|
Center(
|
||||||
child: Dialog(
|
child: Dialog(
|
||||||
@@ -56,8 +60,11 @@ extension OpenAppGridExtension on MailboxController {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
barrierColor: AppColor.blackAlpha20,
|
barrierColor: AppColor.blackAlpha20,
|
||||||
).whenComplete(() =>
|
).whenComplete(() {
|
||||||
mailboxDashBoardController.isAppGridDialogDisplayed.value = false);
|
if (PlatformInfo.isWeb) {
|
||||||
|
mailboxDashBoardController.isAppGridDialogDisplayed.value = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _handleOpenApp(AppLinagoraEcosystem app) async {
|
Future<void> _handleOpenApp(AppLinagoraEcosystem app) async {
|
||||||
|
|||||||
+1
@@ -265,6 +265,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
final isSenderImportantFlagEnabled = RxBool(true);
|
final isSenderImportantFlagEnabled = RxBool(true);
|
||||||
final isAppGridDialogDisplayed = RxBool(false);
|
final isAppGridDialogDisplayed = RxBool(false);
|
||||||
final isDrawerOpened = RxBool(false);
|
final isDrawerOpened = RxBool(false);
|
||||||
|
final isContextMenuOpened = RxBool(false);
|
||||||
|
|
||||||
Session? sessionCurrent;
|
Session? sessionCurrent;
|
||||||
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
||||||
|
|||||||
+13
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user