Fix vacation banner position is not displayed correctly when thread enabled on mobile

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-07-24 12:41:48 +07:00
committed by Dat H. Pham
parent 2ebde9271b
commit 4d527bed66
2 changed files with 55 additions and 24 deletions
+25 -24
View File
@@ -110,33 +110,34 @@ class EmailView extends GetWidget<SingleEmailController> {
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) {
@@ -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<ThreadDetailController> {
const ThreadDetailView({super.key});
@@ -96,6 +99,33 @@ class ThreadDetailView extends GetWidget<ThreadDetailController> {
],
);
}),
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();