From 4d527bed660cabda6638831698f2fc3b3ff23a51 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 24 Jul 2025 12:41:48 +0700 Subject: [PATCH] Fix vacation banner position is not displayed correctly when thread enabled on mobile Signed-off-by: dab246 --- .../email/presentation/email_view.dart | 49 ++++++++++--------- .../presentation/thread_detail_view.dart | 30 ++++++++++++ 2 files changed, 55 insertions(+), 24 deletions(-) diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index c67744c61..3e558ac02 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -110,33 +110,34 @@ class EmailView extends GetWidget { isInsideThreadDetailView: isInsideThreadDetailView, ), ), - Obx(() { - final vacation = controller.mailboxDashBoardController.vacationResponse.value; + if (!isInsideThreadDetailView) + Obx(() { + final vacation = controller.mailboxDashBoardController.vacationResponse.value; - bool isPlatformSupportVacationVisible = - controller.responsiveUtils.isMobile(context) || - controller.responsiveUtils.isTablet(context) || - controller.responsiveUtils.isLandscapeMobile(context); + bool isPlatformSupportVacationVisible = + controller.responsiveUtils.isMobile(context) || + controller.responsiveUtils.isTablet(context) || + controller.responsiveUtils.isLandscapeMobile(context); - bool isVacationBannerVisible = - vacation?.vacationResponderIsValid == true && - isPlatformSupportVacationVisible; + bool isVacationBannerVisible = + vacation?.vacationResponderIsValid == true && + isPlatformSupportVacationVisible; - if (isVacationBannerVisible) { - return VacationNotificationMessageWidget( - margin: const EdgeInsetsDirectional.only( - start: 12, - end: 12, - top: 8, - ), - vacationResponse: vacation!, - actionGotoVacationSetting: controller.mailboxDashBoardController.goToVacationSetting, - actionEndNow: controller.mailboxDashBoardController.disableVacationResponder, - ); - } else { - return const SizedBox.shrink(); - } - }), + if (isVacationBannerVisible) { + return VacationNotificationMessageWidget( + margin: const EdgeInsetsDirectional.only( + start: 12, + end: 12, + top: 8, + ), + vacationResponse: vacation!, + actionGotoVacationSetting: controller.mailboxDashBoardController.goToVacationSetting, + actionEndNow: controller.mailboxDashBoardController.disableVacationResponder, + ); + } else { + return const SizedBox.shrink(); + } + }), OptionalExpanded( expandedEnabled: !isInsideThreadDetailView, child: LayoutBuilder(builder: (context, constraints) { diff --git a/lib/features/thread_detail/presentation/thread_detail_view.dart b/lib/features/thread_detail/presentation/thread_detail_view.dart index fd98e7aa0..b3356efbe 100644 --- a/lib/features/thread_detail/presentation/thread_detail_view.dart +++ b/lib/features/thread_detail/presentation/thread_detail_view.dart @@ -14,6 +14,7 @@ import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action import 'package:tmail_ui_user/features/email/presentation/styles/email_view_app_bar_widget_styles.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_bottom_bar_widget.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_open_context_menu_extension.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart'; import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart'; import 'package:tmail_ui_user/features/thread_detail/presentation/extension/close_thread_detail_action.dart'; import 'package:tmail_ui_user/features/thread_detail/presentation/extension/get_thread_detail_email_mailbox_contains.dart'; @@ -24,6 +25,8 @@ import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_ import 'package:tmail_ui_user/features/thread_detail/presentation/widgets/thread_detail_app_bar.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; +import '../../manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart'; + class ThreadDetailView extends GetWidget { const ThreadDetailView({super.key}); @@ -96,6 +99,33 @@ class ThreadDetailView extends GetWidget { ], ); }), + Obx(() { + final vacation = controller.mailboxDashBoardController.vacationResponse.value; + + bool isPlatformSupportVacationVisible = + controller.responsiveUtils.isMobile(context) || + controller.responsiveUtils.isTablet(context) || + controller.responsiveUtils.isLandscapeMobile(context); + + bool isVacationBannerVisible = + vacation?.vacationResponderIsValid == true && + isPlatformSupportVacationVisible; + + if (isVacationBannerVisible) { + return VacationNotificationMessageWidget( + margin: const EdgeInsetsDirectional.only( + start: 12, + end: 12, + top: 8, + ), + vacationResponse: vacation!, + actionGotoVacationSetting: controller.mailboxDashBoardController.goToVacationSetting, + actionEndNow: controller.mailboxDashBoardController.disableVacationResponder, + ); + } else { + return const SizedBox.shrink(); + } + }), Obx(() { final threadChildren = controller.getThreadDetailEmailViews();