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
+67 -63
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,63 +283,55 @@ class EmailView extends GetWidget<SingleEmailController> with AppLoaderMixin {
imagePaths: imagePaths, imagePaths: imagePaths,
responsiveUtils: responsiveUtils, responsiveUtils: responsiveUtils,
), ),
_buildLoadingContentView(),
_buildAttachments(context), _buildAttachments(context),
Obx(() { _buildLoadingContentView(email),
if (controller.calendarEvent.value != null) { if (email.hasCalendarEvent)
return CalendarEventInformationWidget( Obx(() {
calendarEvent: controller.calendarEvent.value! if (controller.calendarEvent.value != null) {
); return Column(
} else { crossAxisAlignment: CrossAxisAlignment.start,
return const SizedBox.shrink(); mainAxisSize: MainAxisSize.min,
} children: [
}), CalendarEventInformationWidget(
Obx(() { calendarEvent: controller.calendarEvent.value!
if (controller.calendarEvent.value != null) { ),
return CalendarEventActionBannerWidget( CalendarEventActionBannerWidget(
calendarEvent: controller.calendarEvent.value!, calendarEvent: controller.calendarEvent.value!,
listFromEmailAddress: controller.currentEmail?.from listFromEmailAddress: controller.currentEmail?.from
); ),
} else { CalendarEventDetailWidget(
return const SizedBox.shrink(); calendarEvent: controller.calendarEvent.value!
} ),
}), ],
Obx(() { );
if (controller.calendarEvent.value != null) { } else {
return CalendarEventDetailWidget( return const SizedBox.shrink();
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 else
Padding( _buildEmailContent(context, constraints, email)
padding: const EdgeInsetsDirectional.symmetric(
vertical: EmailViewStyles.mobileContentVerticalMargin,
horizontal: EmailViewStyles.mobileContentHorizontalMargin
),
child: _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 (success is GetEmailContentLoading) { if (selectedEmail.hasCalendarEvent) {
return loadingWidget; if ((success is GetEmailContentLoading || success is ParseCalendarEventLoading)) {
return loadingWidget;
} else {
return const SizedBox.shrink();
}
} else { } else {
return const SizedBox.shrink(); if (success is GetEmailContentLoading) {
return loadingWidget;
} else {
return const SizedBox.shrink();
}
} }
}); });
}); });
@@ -473,25 +466,36 @@ 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(
widthContent: constraints.maxWidth, child: Padding(
heightContent: responsiveUtils.getSizeScreenHeight(context), padding: const EdgeInsetsDirectional.only(start: 16, bottom: 16),
contentHtml: allEmailContents ?? "", child: HtmlContentViewerOnWeb(
controller: HtmlViewerControllerForWeb(), widthContent: constraints.maxWidth,
mailtoDelegate: (uri) => controller.openMailToLink(uri), heightContent: responsiveUtils.getSizeScreenHeight(context),
direction: AppUtils.getCurrentDirection(context), contentHtml: allEmailContents ?? "",
controller: HtmlViewerControllerForWeb(),
mailtoDelegate: (uri) => controller.openMailToLink(uri),
direction: AppUtils.getCurrentDirection(context),
),
),
); );
} else { } else {
return HtmlContentViewer( return Padding(
heightContent: responsiveUtils.getSizeScreenHeight(context), padding: const EdgeInsetsDirectional.symmetric(
contentHtml: allEmailContents ?? "", vertical: EmailViewStyles.mobileContentVerticalMargin,
mailtoDelegate: (uri) async => controller.openMailToLink(uri), horizontal: EmailViewStyles.mobileContentHorizontalMargin
onScrollHorizontalEnd: controller.toggleScrollPhysicsPagerView, ),
onWebViewLoaded: (isScrollPageViewActivated) { child: HtmlContentViewer(
log('EmailView::_buildEmailContent(): isScrollPageViewActivated: $isScrollPageViewActivated'); heightContent: responsiveUtils.getSizeScreenHeight(context),
controller.emailSupervisorController.updateScrollPhysicPageView(isScrollPageViewActivated: isScrollPageViewActivated); contentHtml: allEmailContents ?? "",
}, mailtoDelegate: (uri) async => controller.openMailToLink(uri),
direction: AppUtils.getCurrentDirection(context), onScrollHorizontalEnd: controller.toggleScrollPhysicsPagerView,
onWebViewLoaded: (isScrollPageViewActivated) {
log('EmailView::_buildEmailContent(): isScrollPageViewActivated: $isScrollPageViewActivated');
controller.emailSupervisorController.updateScrollPhysicPageView(isScrollPageViewActivated: isScrollPageViewActivated);
},
direction: AppUtils.getCurrentDirection(context),
),
); );
} }
} else { } else {