TF-2116 Apply new design composer mobile
(cherry picked from commit fe4ec144d1a18a94de782f87fff56bbf1cd3a00a)
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
|
||||
import 'package:core/presentation/extensions/html_extension.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||
|
||||
mixin EditorViewMixin {
|
||||
String getEmailContentQuotedAsHtml({
|
||||
required BuildContext context,
|
||||
required String emailContent,
|
||||
required EmailActionType emailActionType,
|
||||
required PresentationEmail presentationEmail,
|
||||
}) {
|
||||
final headerEmailQuoted = emailActionType.getHeaderEmailQuoted(
|
||||
context: context,
|
||||
presentationEmail: presentationEmail
|
||||
);
|
||||
log('EditorViewMixin::getEmailContentQuotedAsHtml:headerEmailQuoted: $headerEmailQuoted');
|
||||
final headerEmailQuotedAsHtml = headerEmailQuoted != null
|
||||
? headerEmailQuoted.addCiteTag()
|
||||
: '';
|
||||
final emailQuotedHtml = '${HtmlExtension.editorStartTags}$headerEmailQuotedAsHtml${emailContent.addBlockQuoteTag()}';
|
||||
return emailQuotedHtml;
|
||||
}
|
||||
}
|
||||
+16
-16
@@ -3,10 +3,10 @@ import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/styles/desktop_container_view_style.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/minimize_composer_widget.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/styles/web/desktop_responsive_container_view_style.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/minimize_composer_widget.dart';
|
||||
|
||||
class DesktopContainerView extends StatelessWidget {
|
||||
class DesktopResponsiveContainerView extends StatelessWidget {
|
||||
|
||||
final ScreenDisplayMode displayMode;
|
||||
final String emailSubject;
|
||||
@@ -16,8 +16,8 @@ class DesktopContainerView extends StatelessWidget {
|
||||
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
DesktopContainerView({
|
||||
super.key,
|
||||
DesktopResponsiveContainerView({
|
||||
super.key,
|
||||
required this.childBuilder,
|
||||
required this.displayMode,
|
||||
required this.emailSubject,
|
||||
@@ -29,8 +29,8 @@ class DesktopContainerView extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
if (displayMode == ScreenDisplayMode.minimize) {
|
||||
return PositionedDirectional(
|
||||
end: DesktopContainerViewStyle.margin,
|
||||
bottom: DesktopContainerViewStyle.margin,
|
||||
end: DesktopResponsiveContainerViewStyle.margin,
|
||||
bottom: DesktopResponsiveContainerViewStyle.margin,
|
||||
child: PointerInterceptor(
|
||||
child: MinimizeComposerWidget(
|
||||
emailSubject: emailSubject,
|
||||
@@ -44,16 +44,16 @@ class DesktopContainerView extends StatelessWidget {
|
||||
final maxHeight = _responsiveUtils.getSizeScreenHeight(context) * 0.75;
|
||||
|
||||
return PositionedDirectional(
|
||||
end: DesktopContainerViewStyle.margin,
|
||||
bottom: DesktopContainerViewStyle.margin,
|
||||
end: DesktopResponsiveContainerViewStyle.margin,
|
||||
bottom: DesktopResponsiveContainerViewStyle.margin,
|
||||
child: Card(
|
||||
elevation: DesktopContainerViewStyle.elevation,
|
||||
elevation: DesktopResponsiveContainerViewStyle.elevation,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(DesktopContainerViewStyle.radius))
|
||||
borderRadius: BorderRadius.all(Radius.circular(DesktopResponsiveContainerViewStyle.radius))
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Container(
|
||||
color: DesktopContainerViewStyle.backgroundColor,
|
||||
color: DesktopResponsiveContainerViewStyle.backgroundColor,
|
||||
width: maxWidth,
|
||||
height: maxHeight,
|
||||
child: LayoutBuilder(builder: (context, constraints) =>
|
||||
@@ -69,16 +69,16 @@ class DesktopContainerView extends StatelessWidget {
|
||||
final maxHeight = _responsiveUtils.getSizeScreenHeight(context) * 0.9;
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: DesktopContainerViewStyle.outSideBackgroundColor,
|
||||
backgroundColor: DesktopResponsiveContainerViewStyle.outSideBackgroundColor,
|
||||
body: Center(
|
||||
child: Card(
|
||||
elevation: DesktopContainerViewStyle.elevation,
|
||||
elevation: DesktopResponsiveContainerViewStyle.elevation,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(DesktopContainerViewStyle.radius))
|
||||
borderRadius: BorderRadius.all(Radius.circular(DesktopResponsiveContainerViewStyle.radius))
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Container(
|
||||
color: DesktopContainerViewStyle.backgroundColor,
|
||||
color: DesktopResponsiveContainerViewStyle.backgroundColor,
|
||||
width: maxWidth,
|
||||
height: maxHeight,
|
||||
child: LayoutBuilder(builder: (context, constraints) =>
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/styles/mobile_container_view_style.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/styles/web/mobile_responsive_container_view_style.dart';
|
||||
|
||||
class MobileContainerView extends StatelessWidget {
|
||||
class MobileResponsiveContainerView extends StatelessWidget {
|
||||
|
||||
final Widget Function(BuildContext context, BoxConstraints constraints) childBuilder;
|
||||
|
||||
const MobileContainerView({
|
||||
const MobileResponsiveContainerView({
|
||||
super.key,
|
||||
required this.childBuilder,
|
||||
});
|
||||
@@ -14,7 +14,7 @@ class MobileContainerView extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: MobileContainerViewStyle.outSideBackgroundColor,
|
||||
backgroundColor: MobileResponsiveContainerViewStyle.outSideBackgroundColor,
|
||||
body: LayoutBuilder(builder: (context, constraints) =>
|
||||
PointerInterceptor(
|
||||
child: childBuilder.call(context, constraints)
|
||||
+9
-9
@@ -2,15 +2,15 @@ import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/styles/tablet_container_view_style.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/styles/web/tablet_responsive_container_view_style.dart';
|
||||
|
||||
class TabletContainerView extends StatelessWidget {
|
||||
class TabletResponsiveContainerView extends StatelessWidget {
|
||||
|
||||
final Widget Function(BuildContext context, BoxConstraints constraints) childBuilder;
|
||||
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
TabletContainerView({
|
||||
TabletResponsiveContainerView({
|
||||
super.key,
|
||||
required this.childBuilder,
|
||||
});
|
||||
@@ -18,18 +18,18 @@ class TabletContainerView extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: TabletContainerViewStyle.outSideBackgroundColor,
|
||||
backgroundColor: TabletResponsiveContainerViewStyle.outSideBackgroundColor,
|
||||
body: Center(
|
||||
child: Card(
|
||||
elevation: TabletContainerViewStyle.elevation,
|
||||
margin: TabletContainerViewStyle.getMargin(context, _responsiveUtils),
|
||||
elevation: TabletResponsiveContainerViewStyle.elevation,
|
||||
margin: TabletResponsiveContainerViewStyle.getMargin(context, _responsiveUtils),
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(TabletContainerViewStyle.radius))
|
||||
borderRadius: BorderRadius.all(Radius.circular(TabletResponsiveContainerViewStyle.radius))
|
||||
),
|
||||
clipBehavior: Clip.antiAlias,
|
||||
child: Container(
|
||||
color: TabletContainerViewStyle.backgroundColor,
|
||||
width: TabletContainerViewStyle.getWidth(context, _responsiveUtils),
|
||||
color: TabletResponsiveContainerViewStyle.backgroundColor,
|
||||
width: TabletResponsiveContainerViewStyle.getWidth(context, _responsiveUtils),
|
||||
child: LayoutBuilder(builder: (context, constraints) =>
|
||||
PointerInterceptor(
|
||||
child: childBuilder.call(context, constraints)
|
||||
+6
-26
@@ -2,21 +2,19 @@
|
||||
import 'package:core/presentation/extensions/html_extension.dart';
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:html_editor_enhanced/html_editor.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/cupertino_loading_widget.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web_editor_widget.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/view/editor_view_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/web_editor_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/transform_html_email_content_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
class WebEditorView extends StatelessWidget {
|
||||
class WebEditorView extends StatelessWidget with EditorViewMixin {
|
||||
|
||||
final HtmlEditorController editorController;
|
||||
final ComposerArguments? arguments;
|
||||
@@ -115,7 +113,7 @@ class WebEditorView extends StatelessWidget {
|
||||
}
|
||||
return contentViewState!.fold(
|
||||
(failure) {
|
||||
final emailContentQuoted = _getEmailContentQuotedAsHtml(
|
||||
final emailContentQuoted = getEmailContentQuotedAsHtml(
|
||||
context: context,
|
||||
emailContent: '',
|
||||
emailActionType: arguments!.emailActionType,
|
||||
@@ -137,7 +135,7 @@ class WebEditorView extends StatelessWidget {
|
||||
if (success is TransformHtmlEmailContentLoading) {
|
||||
return const CupertinoLoadingWidget(padding: EdgeInsets.all(16.0));
|
||||
} else {
|
||||
final emailContentQuoted = _getEmailContentQuotedAsHtml(
|
||||
final emailContentQuoted = getEmailContentQuotedAsHtml(
|
||||
context: context,
|
||||
emailContent: success is TransformHtmlEmailContentSuccess
|
||||
? success.htmlContent
|
||||
@@ -173,22 +171,4 @@ class WebEditorView extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _getEmailContentQuotedAsHtml({
|
||||
required BuildContext context,
|
||||
required String emailContent,
|
||||
required EmailActionType emailActionType,
|
||||
required PresentationEmail presentationEmail,
|
||||
}) {
|
||||
final headerEmailQuoted = emailActionType.getHeaderEmailQuoted(
|
||||
context: context,
|
||||
presentationEmail: presentationEmail
|
||||
);
|
||||
log('WebEditorView::getEmailContentQuotedAsHtml:headerEmailQuoted: $headerEmailQuoted');
|
||||
final headerEmailQuotedAsHtml = headerEmailQuoted != null
|
||||
? headerEmailQuoted.addCiteTag()
|
||||
: '';
|
||||
final emailQuotedHtml = '${HtmlExtension.editorStartTags}$headerEmailQuotedAsHtml${emailContent.addBlockQuoteTag()}';
|
||||
return emailQuotedHtml;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user