TF-3601 Fix content gone blank in composer on IOS

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-04-03 15:27:55 +07:00
committed by Dat H. Pham
parent d6711ba93b
commit 0703d14761
16 changed files with 274 additions and 88 deletions
+11 -34
View File
@@ -1,3 +1,4 @@
import 'package:core/presentation/constants/constants_ui.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:core/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart';
@@ -32,6 +33,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_emp
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_loading_bar_widget.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/view_entire_message_with_message_clipped_widget.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/main/localizations/app_localizations.dart';
@@ -390,7 +392,7 @@ class EmailView extends GetWidget<SingleEmailController> {
else if (presentationEmail.id == controller.currentEmail?.id)
Obx(() {
if (controller.emailContents.value != null) {
String allEmailContents = controller.emailContents.value ?? '';
final allEmailContents = controller.emailContents.value ?? '';
if (PlatformInfo.isWeb) {
return Expanded(
@@ -449,6 +451,7 @@ class EmailView extends GetWidget<SingleEmailController> {
direction: AppUtils.getCurrentDirection(context),
contentPadding: 0,
useDefaultFont: true,
maxHtmlContentHeight: ConstantsUI.htmlContentMaxHeight,
onMailtoDelegateAction: controller.openMailToLink,
onScrollHorizontalEnd: controller.toggleScrollPhysicsPagerView,
onLoadWidthHtmlViewer: controller.emailSupervisorController.updateScrollPhysicPageView,
@@ -458,38 +461,13 @@ class EmailView extends GetWidget<SingleEmailController> {
),
Obx(() {
if (controller.isEmailContentClipped.isTrue) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Text(
AppLocalizations.of(context).messageClipped,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: AppColor.steelGray400,
),
),
),
TMailButtonWidget.fromText(
text: AppLocalizations.of(context).viewEntireMessage.toUpperCase(),
textStyle: Theme.of(context).textTheme.bodyLarge?.copyWith(
color: AppColor.primaryColor,
fontSize: 14,
),
margin: const EdgeInsetsDirectional.only(
start: 8,
end: 8,
bottom: 24,
),
backgroundColor: Colors.transparent,
onTapActionCallback: () =>
controller.onViewEntireMessage(
context: context,
emailContent: allEmailContents,
presentationEmail: presentationEmail,
),
),
],
return ViewEntireMessageWithMessageClippedWidget(
buttonActionName: AppLocalizations.of(context).viewEntireMessage.toUpperCase(),
onViewEntireMessageAction: () => controller.onViewEntireMessage(
context: context,
emailContent: allEmailContents,
presentationEmail: presentationEmail,
),
);
} else {
return const SizedBox.shrink();
@@ -515,7 +493,6 @@ class EmailView extends GetWidget<SingleEmailController> {
onMailtoDelegateAction: controller.openMailToLink,
onScrollHorizontalEnd: controller.toggleScrollPhysicsPagerView,
onLoadWidthHtmlViewer: controller.emailSupervisorController.updateScrollPhysicPageView,
onHtmlContentClippedAction: controller.onHtmlContentClippedAction,
);
})
);
@@ -1,4 +1,5 @@
import 'package:core/presentation/constants/constants_ui.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart';
@@ -72,6 +73,9 @@ class EventBodyContentWidget extends StatelessWidget {
return HtmlContentViewer(
contentHtml: content,
initialWidth: constraints.maxWidth,
maxHtmlContentHeight: PlatformInfo.isIOS
? ConstantsUI.htmlContentMaxHeight
: null,
direction: AppUtils.getCurrentDirection(context),
onMailtoDelegateAction: onMailtoDelegateAction
);
@@ -0,0 +1,54 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class ViewEntireMessageWithMessageClippedWidget extends StatelessWidget {
final String buttonActionName;
final VoidCallback onViewEntireMessageAction;
final double? topPadding;
const ViewEntireMessageWithMessageClippedWidget({
super.key,
required this.buttonActionName,
required this.onViewEntireMessageAction,
this.topPadding,
});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (topPadding != null)
SizedBox(height: topPadding),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Text(
AppLocalizations.of(context).messageClipped,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: AppColor.steelGray400,
),
),
),
TMailButtonWidget.fromText(
text: buttonActionName,
textStyle: Theme.of(context).textTheme.bodyLarge?.copyWith(
color: AppColor.primaryColor,
fontSize: 14,
),
margin: const EdgeInsetsDirectional.only(
start: 8,
end: 8,
bottom: 24,
),
backgroundColor: Colors.transparent,
onTapActionCallback: onViewEntireMessageAction,
),
],
);
}
}