TF-2057 Hide email content as html when has calendar event

(cherry picked from commit 033343a3016905f459c547cf816c12ecfeba6958)
This commit is contained in:
dab246
2023-07-28 00:27:11 +07:00
committed by Dat Vu
parent 689324edaf
commit 51fe837493
+44 -40
View File
@@ -23,6 +23,7 @@ import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/base/widget/custom_scroll_behavior.dart'; import 'package:tmail_ui_user/features/base/widget/custom_scroll_behavior.dart';
import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart'; import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart';
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart'; import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart';
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart'; import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_styles.dart'; import 'package:tmail_ui_user/features/email/presentation/styles/email_view_styles.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_widget_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_widget_builder.dart';
@@ -229,7 +230,7 @@ class EmailView extends GetWidget<SingleEmailController> with AppLoaderMixin {
} }
Widget _buildEmailBody(BuildContext context, PresentationEmail email) { Widget _buildEmailBody(BuildContext context, PresentationEmail email) {
if (PlatformInfo.isWeb) { if (PlatformInfo.isWeb && !email.hasCalendarEvent) {
return _buildEmailMessage(context, email); return _buildEmailMessage(context, email);
} else { } else {
return SingleChildScrollView( return SingleChildScrollView(
@@ -282,64 +283,56 @@ class EmailView extends GetWidget<SingleEmailController> with AppLoaderMixin {
imagePaths: imagePaths, imagePaths: imagePaths,
responsiveUtils: responsiveUtils, responsiveUtils: responsiveUtils,
), ),
_buildLoadingContentView(),
_buildAttachments(context), _buildAttachments(context),
_buildLoadingContentView(email),
if (email.hasCalendarEvent)
Obx(() { Obx(() {
if (controller.calendarEvent.value != null) { if (controller.calendarEvent.value != null) {
return CalendarEventInformationWidget( return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
CalendarEventInformationWidget(
calendarEvent: controller.calendarEvent.value! calendarEvent: controller.calendarEvent.value!
); ),
} else { CalendarEventActionBannerWidget(
return const SizedBox.shrink();
}
}),
Obx(() {
if (controller.calendarEvent.value != null) {
return CalendarEventActionBannerWidget(
calendarEvent: controller.calendarEvent.value!, calendarEvent: controller.calendarEvent.value!,
listFromEmailAddress: controller.currentEmail?.from listFromEmailAddress: controller.currentEmail?.from
);
} else {
return const SizedBox.shrink();
}
}),
Obx(() {
if (controller.calendarEvent.value != null) {
return CalendarEventDetailWidget(
calendarEvent: controller.calendarEvent.value!
);
} else {
return const SizedBox.shrink();
}
}),
if (PlatformInfo.isWeb)
Expanded(child: Padding(
padding: const EdgeInsetsDirectional.only(start: 16, bottom: 16),
child: _buildEmailContent(context, constraints, email)
))
else
Padding(
padding: const EdgeInsetsDirectional.symmetric(
vertical: EmailViewStyles.mobileContentVerticalMargin,
horizontal: EmailViewStyles.mobileContentHorizontalMargin
), ),
child: _buildEmailContent(context, constraints, email) CalendarEventDetailWidget(
) calendarEvent: controller.calendarEvent.value!
),
],
);
} else {
return const SizedBox.shrink();
}
})
else
_buildEmailContent(context, constraints, email)
], ],
); );
}); });
} }
Widget _buildLoadingContentView() { Widget _buildLoadingContentView(PresentationEmail selectedEmail) {
return Obx(() { return Obx(() {
return controller.viewState.value.fold( return controller.viewState.value.fold(
(failure) => const SizedBox.shrink(), (failure) => const SizedBox.shrink(),
(success) { (success) {
if (selectedEmail.hasCalendarEvent) {
if ((success is GetEmailContentLoading || success is ParseCalendarEventLoading)) {
return loadingWidget;
} else {
return const SizedBox.shrink();
}
} else {
if (success is GetEmailContentLoading) { if (success is GetEmailContentLoading) {
return loadingWidget; return loadingWidget;
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
} }
}
}); });
}); });
} }
@@ -473,16 +466,26 @@ class EmailView extends GetWidget<SingleEmailController> with AppLoaderMixin {
final allEmailContents = controller.emailContents.value; final allEmailContents = controller.emailContents.value;
if (PlatformInfo.isWeb) { if (PlatformInfo.isWeb) {
return HtmlContentViewerOnWeb( return Expanded(
child: Padding(
padding: const EdgeInsetsDirectional.only(start: 16, bottom: 16),
child: HtmlContentViewerOnWeb(
widthContent: constraints.maxWidth, widthContent: constraints.maxWidth,
heightContent: responsiveUtils.getSizeScreenHeight(context), heightContent: responsiveUtils.getSizeScreenHeight(context),
contentHtml: allEmailContents ?? "", contentHtml: allEmailContents ?? "",
controller: HtmlViewerControllerForWeb(), controller: HtmlViewerControllerForWeb(),
mailtoDelegate: (uri) => controller.openMailToLink(uri), mailtoDelegate: (uri) => controller.openMailToLink(uri),
direction: AppUtils.getCurrentDirection(context), direction: AppUtils.getCurrentDirection(context),
),
),
); );
} else { } else {
return HtmlContentViewer( return Padding(
padding: const EdgeInsetsDirectional.symmetric(
vertical: EmailViewStyles.mobileContentVerticalMargin,
horizontal: EmailViewStyles.mobileContentHorizontalMargin
),
child: HtmlContentViewer(
heightContent: responsiveUtils.getSizeScreenHeight(context), heightContent: responsiveUtils.getSizeScreenHeight(context),
contentHtml: allEmailContents ?? "", contentHtml: allEmailContents ?? "",
mailtoDelegate: (uri) async => controller.openMailToLink(uri), mailtoDelegate: (uri) async => controller.openMailToLink(uri),
@@ -492,6 +495,7 @@ class EmailView extends GetWidget<SingleEmailController> with AppLoaderMixin {
controller.emailSupervisorController.updateScrollPhysicPageView(isScrollPageViewActivated: isScrollPageViewActivated); controller.emailSupervisorController.updateScrollPhysicPageView(isScrollPageViewActivated: isScrollPageViewActivated);
}, },
direction: AppUtils.getCurrentDirection(context), direction: AppUtils.getCurrentDirection(context),
),
); );
} }
} else { } else {