Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion core/lib/presentation/extensions/color_extension.dart
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ extension AppColor on Color {
static const colorDividerEmailView = Color(0xFFD7D8D9);
static const colorButton = Color(0xFF959DAD);
static const colorTime = Color(0xFF92A1B4);
static const colorEmailAddressPrefix = Color(0xFF9AA7B6);
static const colorEmailAddressTag = Color(0xFFF4F4F4);
static const colorLineLeftEmailView = Color(0x2999A2AD);
static const colorShadowComposer = Color(0x1F000000);
Expand Down Expand Up @@ -258,6 +257,7 @@ extension AppColor on Color {
static const gray424244 = Color(0xFF424244);
static const lightGrayF4F4F4 = Color(0xFFF4F4F4);
static const gray959DAD = Color(0xFF959DAD);
static const gray9AA7B6 = Color(0xFF9AA7B6);
static const redFF3347 = Color(0xFFFF3347);
static const gray686E76 = Color(0xFF686E76);
static const lightGrayEBEDF0 = Color(0xFFEBEDF0);
Expand Down
8 changes: 8 additions & 0 deletions core/lib/presentation/utils/theme_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,14 @@ class ThemeUtils {
backgroundColor: backgroundColor,
);

static TextStyle textStyleBodySmallHeadline = defaultTextStyleInterFont.copyWith(
fontWeight: FontWeight.w600,
letterSpacing: -0.13,
fontSize: 13,
height: 16 / 13,
color: Colors.black,
);

static TextStyle textStyleHeadingH6({
Color? color,
FontWeight? fontWeight,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class HtmlContentViewerOnWeb extends StatefulWidget {
final TextDirection? direction;
final double? contentPadding;
final bool useDefaultFontStyle;
final double fontSize;

/// Handler for mailto: links
final OnMailtoClicked? mailtoDelegate;
Expand Down Expand Up @@ -60,6 +61,7 @@ class HtmlContentViewerOnWeb extends StatefulWidget {
this.keepAlive = false,
this.disableScrolling = false,
this.autoAdjustHeight = false,
this.fontSize = 14,
this.htmlContentMinHeight = ConstantsUI.htmlContentMinHeight,
this.htmlContentMinWidth = ConstantsUI.htmlContentMinWidth,
this.offsetHtmlContentHeight = ConstantsUI.htmlContentOffsetHeight,
Expand Down Expand Up @@ -406,6 +408,7 @@ class _HtmlContentViewerOnWebState extends State<HtmlContentViewerOnWeb>
direction: widget.direction,
contentPadding: widget.contentPadding,
useDefaultFontStyle: widget.useDefaultFontStyle,
fontSize: widget.fontSize,
);

return htmlTemplate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class HtmlContentViewer extends StatefulWidget {
final bool keepWidthWhileLoading;
final double? contentPadding;
final bool useDefaultFontStyle;
final double fontSize;
final double? maxHtmlContentHeight;
final double htmlContentMinHeight;
final double offsetHtmlContentHeight;
Expand Down Expand Up @@ -58,6 +59,7 @@ class HtmlContentViewer extends StatefulWidget {
this.contentPadding,
this.useDefaultFontStyle = false,
this.disableScrolling = false,
this.fontSize = 16,
this.maxViewHeight,
this.maxHtmlContentHeight,
this.onLoadWidthHtmlViewer,
Expand Down Expand Up @@ -151,6 +153,7 @@ class HtmlContentViewState extends State<HtmlContentViewer> with AutomaticKeepAl
styleCSS: combinedCss,
contentPadding: widget.contentPadding,
useDefaultFontStyle: widget.useDefaultFontStyle,
fontSize: widget.fontSize,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class _IosHtmlContentViewerWidgetState extends State<IosHtmlContentViewerWidget>
direction: widget.direction,
javaScripts: HtmlInteraction.scriptsHandleLazyLoadingBackgroundImage,
useDefaultFontStyle: widget.useDefaultFontStyle,
fontSize: 16,
));
}

Expand Down
13 changes: 12 additions & 1 deletion core/lib/presentation/views/image/avatar_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class AvatarBuilder {
List<Color>? _avatarColors;
List<BoxShadow>? _boxShadows;
TextStyle? _textStyle;
EdgeInsetsGeometry? _padding;

void key(Key key) {
_key = key;
Expand Down Expand Up @@ -55,6 +56,10 @@ class AvatarBuilder {
_textStyle = textStyle;
}

void addPadding(EdgeInsetsGeometry? padding) {
_padding = padding;
}

void addOnTapActionClick(OnTapAvatarActionClick onTapAvatarActionClick) {
_onTapAvatarActionClick = onTapAvatarActionClick;
}
Expand All @@ -64,7 +69,7 @@ class AvatarBuilder {
}

Widget build() {
return InkWell(
final bodyWidget = InkWell(
onTap: _onTapAvatarActionClick,
onTapDown: (detail) {
if (_onTapAvatarActionWithPositionClick != null && _context != null) {
Expand Down Expand Up @@ -102,5 +107,11 @@ class AvatarBuilder {
)
),
);

if (_padding != null) {
return Padding(padding: _padding!, child: bodyWidget);
} else {
return bodyWidget;
}
}
}
9 changes: 4 additions & 5 deletions core/lib/utils/html/html_template.dart
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,11 @@ class HtmlTemplate {
}
''';

static const String defaultFontStyle = '''
div, p, span, th, td, tr, ul, ol, li, a, button {
static String defaultFontStyle({double fontSize = 14}) => '''
body {
font-weight: 400;
font-size: 16px;
line-height: 24px;
letter-spacing: -0.01em; /* -1% */
font-size: ${fontSize}px;
font-style: normal;
}

p {
Expand Down
3 changes: 2 additions & 1 deletion core/lib/utils/html/html_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ class HtmlUtils {
String? javaScripts,
bool hideScrollBar = true,
bool useDefaultFontStyle = false,
double fontSize = 14,
TextDirection? direction,
double? contentPadding,
}) {
Expand All @@ -135,7 +136,7 @@ class HtmlUtils {
<style>
${HtmlTemplate.fontFaceStyle}

${useDefaultFontStyle ? HtmlTemplate.defaultFontStyle : ''}
${useDefaultFontStyle ? HtmlTemplate.defaultFontStyle(fontSize: fontSize) : ''}

.tmail-content {
min-height: ${minHeight ?? 0}px;
Expand Down
7 changes: 6 additions & 1 deletion lib/features/base/widget/email_avatar_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,26 @@ class EmailAvatarBuilder extends StatelessWidget {
final PresentationEmail emailSelected;
final OnTapAvatarActionClick? onTapAvatarActionClick;
final double? size;
final TextStyle? textStyle;
final EdgeInsetsGeometry? padding;

const EmailAvatarBuilder({
Key? key,
required this.emailSelected,
this.onTapAvatarActionClick,
this.size,
this.textStyle,
this.padding,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return (AvatarBuilder()
..text(emailSelected.getAvatarText())
..size(size ?? 50)
..addTextStyle(ThemeUtils.textStyleHeadingH4(color: Colors.white))
..addTextStyle(textStyle ?? ThemeUtils.textStyleHeadingH4(color: Colors.white))
..backgroundColor(AppColor.colorAvatar)
..addPadding(padding)
..addOnTapActionClick(onTapAvatarActionClick ?? () {})
..avatarColor(emailSelected.avatarColors))
.build();
Expand Down
21 changes: 8 additions & 13 deletions lib/features/email/presentation/email_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -244,16 +244,16 @@ class EmailView extends GetWidget<SingleEmailController> {
presentationEmail: presentationEmail.copyWith(
subject: threadSubject,
),
)
else
const SizedBox(height: 16),
isMobileResponsive: isMobileResponsive,
),
Obx(() => InformationSenderAndReceiverBuilder(
emailSelected: presentationEmail,
imagePaths: controller.imagePaths,
responsiveUtils: controller.responsiveUtils,
sMimeStatus: controller.currentEmailLoaded.value?.sMimeStatus,
emailUnsubscribe: controller.emailUnsubscribe.value,
maxBodyHeight: bodyConstraints.maxHeight,
isInsideThreadCollapsed: false,
openEmailAddressDetailAction: (_, emailAddress) => controller.openEmailAddressDialog(emailAddress),
onEmailActionClick: (presentationEmail, actionType) => controller.handleEmailAction(context, presentationEmail, actionType),
isInsideThreadDetailView: isInsideThreadDetailView,
Expand Down Expand Up @@ -287,8 +287,6 @@ class EmailView extends GetWidget<SingleEmailController> {
controller.mailboxDashBoardController.mapMailboxById,
),
)),
if (!isMobileResponsive)
const SizedBox(height: 16),
Obx(() => MailUnsubscribedBanner(
presentationEmail: controller.currentEmail,
emailUnsubscribe: controller.emailUnsubscribe.value
Expand Down Expand Up @@ -359,6 +357,7 @@ class EmailView extends GetWidget<SingleEmailController> {
useDefaultFontStyle: true,
scrollController: scrollController,
enableQuoteToggle: true,
fontSize: isMobileResponsive ? 16 : 14,
),
);
} else if (PlatformInfo.isIOS) {
Expand All @@ -370,10 +369,7 @@ class EmailView extends GetWidget<SingleEmailController> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsetsDirectional.symmetric(
vertical: EmailViewStyles.mobileContentVerticalMargin,
horizontal: EmailViewStyles.mobileContentHorizontalMargin,
),
padding: EmailViewStyles.mobileEmailContentPadding,
child: HtmlContentViewer(
key: PlatformInfo.isIntegrationTesting
? controller.htmlContentViewKey
Expand All @@ -389,6 +385,7 @@ class EmailView extends GetWidget<SingleEmailController> {
onScrollHorizontalEnd: controller.onScrollHorizontalEnd,
keepAlive: isInsideThreadDetailView,
enableQuoteToggle: true,
fontSize: isMobileResponsive ? 16 : 14,
),
),
Obx(() {
Expand All @@ -411,10 +408,7 @@ class EmailView extends GetWidget<SingleEmailController> {
});
} else {
return Padding(
padding: const EdgeInsetsDirectional.symmetric(
vertical: EmailViewStyles.mobileContentVerticalMargin,
horizontal: EmailViewStyles.mobileContentHorizontalMargin
),
padding: EmailViewStyles.mobileEmailContentPadding,
child: HtmlContentViewer(
key: PlatformInfo.isIntegrationTesting
? controller.htmlContentViewKey
Expand All @@ -428,6 +422,7 @@ class EmailView extends GetWidget<SingleEmailController> {
keepAlive: isInsideThreadDetailView,
enableQuoteToggle: true,
onScrollHorizontalEnd: controller.onScrollHorizontalEnd,
fontSize: isMobileResponsive ? 16 : 14,
)
);
}
Expand Down
14 changes: 10 additions & 4 deletions lib/features/email/presentation/styles/email_subject_styles.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@

import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';

class EmailSubjectStyles {
static int? maxLines = PlatformInfo.isWeb ? 2 : null;

static const Color cursorColor = AppColor.colorTextButton;
static const EdgeInsetsGeometry padding = EdgeInsets.all(16);
static const EdgeInsetsGeometry mobilePadding = EdgeInsets.all(12);

static const EdgeInsetsGeometry padding = EdgeInsets.symmetric(vertical: 12, horizontal: 16);
static final TextStyle textStyle = ThemeUtils.textStyleInter500().copyWith(
overflow: PlatformInfo.isWeb ? TextOverflow.ellipsis : null,
color: Colors.black,
fontSize: 24,
height: 1,
letterSpacing: -0.24,
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,19 @@ class EmailViewAppBarWidgetStyles {
if (responsiveUtils.isLandscapeMobile(context)) {
return EdgeInsets.zero;
} else if (responsiveUtils.isPortraitTablet(context) || responsiveUtils.isLandscapeTablet(context)) {
return const EdgeInsetsDirectional.only(top: 40, start: 16, end: 16, bottom: 4);
return const EdgeInsetsDirectional.only(
top: 40,
start: 12,
end: 12,
bottom: 4,
);
} else {
return const EdgeInsetsDirectional.only(start: 16, end: 16, bottom: 4);
return const EdgeInsetsDirectional.only(start: 12, end: 12, bottom: 4);
}
}
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.symmetric(horizontal: 16);

static const EdgeInsetsGeometry mobilePadding =
EdgeInsetsDirectional.only(start: 8, end: 12);
static const EdgeInsetsGeometry padding =
EdgeInsetsDirectional.symmetric(horizontal: 16);
}
18 changes: 3 additions & 15 deletions lib/features/email/presentation/styles/email_view_styles.dart
Original file line number Diff line number Diff line change
@@ -1,20 +1,8 @@

import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/icon_utils.dart';
import 'package:flutter/material.dart';

class EmailViewStyles {
static const double mobileContentHorizontalMargin = 16;
static const double mobileContentVerticalMargin = 12;
static double pageViewIconSize = IconUtils.defaultIconSize;
static const double initialHtmlViewHeight = 200;

static const Color iconColor = AppColor.steelGrayA540;

static const EdgeInsetsGeometry emailContentPadding =
EdgeInsetsDirectional.only(
start: 16,
end: 16,
top: 8,
);
EdgeInsetsDirectional.symmetric(horizontal: 16);
static const EdgeInsetsGeometry mobileEmailContentPadding =
EdgeInsetsDirectional.only(start: 12, end: 12, top: 12);
}
Loading
Loading