From 840a191831a3074c2acf86ac01a67cbf6a730480 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 15 Mar 2024 11:32:51 +0700 Subject: [PATCH] TF-2713 Small evolution for printing --- .../domain/extensions/datetime_extension.dart | 11 ++++------- core/lib/utils/print_utils.dart | 6 ++++-- .../print_file_datasource_impl.dart | 14 ++++++++------ lib/features/email/domain/model/email_print.dart | 4 ++++ .../controller/single_email_controller.dart | 1 + .../information_sender_and_receiver_builder.dart | 5 +---- .../widgets/received_time_builder.dart | 7 ++----- .../model/search/advanced_search_filter.dart | 4 ++-- lib/l10n/intl_ar.arb | 12 ------------ lib/l10n/intl_en.arb | 12 ------------ lib/l10n/intl_fr.arb | 16 ++-------------- lib/l10n/intl_it.arb | 12 ------------ lib/l10n/intl_messages.arb | 14 +------------- lib/l10n/intl_ru.arb | 12 ------------ lib/l10n/intl_vi.arb | 12 ------------ lib/main/localizations/app_localizations.dart | 14 -------------- model/lib/extensions/email_extension.dart | 12 ++++++++++++ .../extensions/presentation_email_extension.dart | 1 + 18 files changed, 42 insertions(+), 127 deletions(-) diff --git a/core/lib/domain/extensions/datetime_extension.dart b/core/lib/domain/extensions/datetime_extension.dart index da3316d4b..2af95ffd5 100644 --- a/core/lib/domain/extensions/datetime_extension.dart +++ b/core/lib/domain/extensions/datetime_extension.dart @@ -48,13 +48,10 @@ extension DateTimeNullableExtension on DateTime? { } String toPatternForEmailView() { - if (this != null) { - if (this!.isThisYear()) { - return 'dd.MM, HH:mm'; - } else { - return 'dd/MM/yyyy'; - } + if (this?.isThisYear() == true) { + return 'dd.MM, HH:mm'; + } else { + return 'dd.MM.yyyy, HH:mm'; } - return 'dd/MM/yyyy'; } } diff --git a/core/lib/utils/print_utils.dart b/core/lib/utils/print_utils.dart index 0110d1008..2f511fd18 100644 --- a/core/lib/utils/print_utils.dart +++ b/core/lib/utils/print_utils.dart @@ -71,6 +71,7 @@ class PrintUtils { } Element? _createSenderElement({ + required String fromPrefix, required String senderName, required String senderEmailAddress, required String dateTime, @@ -79,7 +80,7 @@ class PrintUtils { return Element.html(''' - $senderName <$senderEmailAddress> + $fromPrefix: $senderName <$senderEmailAddress> $dateTime @@ -207,8 +208,8 @@ class PrintUtils { required String emailContent, required String senderName, required String senderEmailAddress, - required String locale, required String dateTime, + required String fromPrefix, required String toPrefix, required String ccPrefix, required String bccPrefix, @@ -234,6 +235,7 @@ class PrintUtils { Element? subjectElement = _createSubjectElement(subject); Element? senderElement = _createSenderElement( + fromPrefix: fromPrefix, senderName: senderName, senderEmailAddress: senderEmailAddress, dateTime: dateTime); diff --git a/lib/features/email/data/datasource_impl/print_file_datasource_impl.dart b/lib/features/email/data/datasource_impl/print_file_datasource_impl.dart index af8f2a500..1ba19531b 100644 --- a/lib/features/email/data/datasource_impl/print_file_datasource_impl.dart +++ b/lib/features/email/data/datasource_impl/print_file_datasource_impl.dart @@ -1,10 +1,11 @@ import 'package:core/data/model/print_attachment.dart'; +import 'package:core/domain/extensions/datetime_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/utils/file_utils.dart'; import 'package:core/utils/print_utils.dart'; import 'package:filesize/filesize.dart'; import 'package:model/email/attachment.dart'; -import 'package:model/extensions/utc_date_extension.dart'; +import 'package:model/extensions/email_extension.dart'; import 'package:tmail_ui_user/features/email/data/datasource/print_file_datasource.dart'; import 'package:tmail_ui_user/features/email/domain/model/email_print.dart'; import 'package:tmail_ui_user/features/email/presentation/extensions/attachment_extension.dart'; @@ -30,9 +31,10 @@ class PrintFileDataSourceImpl extends PrintFileDataSource { final sender = emailPrint.emailInformation.from?.isNotEmpty == true ? emailPrint.emailInformation.from!.first : null; - final receiveTime = emailPrint.emailInformation.receivedAt?.formatDateToLocal( - pattern: 'E, MMM d, yyyy \'at\' h:mm a', - locale: emailPrint.locale); + final receiveTime = emailPrint.emailInformation.getReceivedAt( + newLocale: emailPrint.locale, + pattern: emailPrint.emailInformation.receivedAt?.value.toLocal().toPatternForEmailView() + ); final List listPrintAttachment = []; @@ -51,12 +53,12 @@ class PrintFileDataSourceImpl extends PrintFileDataSource { return await _printUtils.printEmail( appName: emailPrint.appName, userName: emailPrint.userName, - locale: emailPrint.locale, subject: emailPrint.emailInformation.subject ?? '', emailContent: emailPrint.emailContent, senderName: sender?.name ?? '', senderEmailAddress: sender?.email ?? '', - dateTime: receiveTime ?? '', + dateTime: receiveTime, + fromPrefix: emailPrint.fromPrefix, toPrefix: emailPrint.toPrefix, ccPrefix: emailPrint.ccPrefix, bccPrefix: emailPrint.bccPrefix, diff --git a/lib/features/email/domain/model/email_print.dart b/lib/features/email/domain/model/email_print.dart index 3e73d446f..3c1f33063 100644 --- a/lib/features/email/domain/model/email_print.dart +++ b/lib/features/email/domain/model/email_print.dart @@ -9,6 +9,7 @@ class EmailPrint with EquatableMixin { final String emailContent; final String locale; final String toPrefix; + final String fromPrefix; final String ccPrefix; final String bccPrefix; final String replyToPrefix; @@ -25,6 +26,7 @@ class EmailPrint with EquatableMixin { required this.emailInformation, required this.emailContent, required this.locale, + required this.fromPrefix, required this.toPrefix, required this.ccPrefix, required this.bccPrefix, @@ -44,6 +46,7 @@ class EmailPrint with EquatableMixin { emailInformation, emailContent, locale, + fromPrefix, toPrefix, ccPrefix, bccPrefix, @@ -66,6 +69,7 @@ extension EmailPrintExtension on EmailPrint { emailContent: newEmailContent, titleAttachment: titleAttachment, locale: locale, + fromPrefix: fromPrefix, toPrefix: toPrefix, ccPrefix: ccPrefix, bccPrefix: bccPrefix, diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index d1ead8659..29e727cd2 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -1599,6 +1599,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { attachments: _currentEmailLoaded?.attachments, emailContent: _currentEmailLoaded?.htmlContent ?? '', locale: Localizations.localeOf(context).toLanguageTag(), + fromPrefix: AppLocalizations.of(context).from_email_address_prefix, toPrefix: AppLocalizations.of(context).to_email_address_prefix, ccPrefix: AppLocalizations.of(context).cc_email_address_prefix, bccPrefix: AppLocalizations.of(context).bcc_email_address_prefix, diff --git a/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart b/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart index 0923e546e..55bb5541b 100644 --- a/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart +++ b/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart @@ -81,10 +81,7 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget { ], ) ), - ReceivedTimeBuilder( - emailSelected: emailSelected, - margin: const EdgeInsetsDirectional.only(start: 16), - ), + ReceivedTimeBuilder(emailSelected: emailSelected), ]), if (emailSelected.numberOfAllEmailAddress() > 0) EmailReceiverWidget( diff --git a/lib/features/email/presentation/widgets/received_time_builder.dart b/lib/features/email/presentation/widgets/received_time_builder.dart index baee3b2de..9283e1b83 100644 --- a/lib/features/email/presentation/widgets/received_time_builder.dart +++ b/lib/features/email/presentation/widgets/received_time_builder.dart @@ -9,19 +9,16 @@ import 'package:model/extensions/presentation_email_extension.dart'; class ReceivedTimeBuilder extends StatelessWidget { final PresentationEmail emailSelected; - final EdgeInsetsGeometry? margin; const ReceivedTimeBuilder({ Key? key, required this.emailSelected, - this.margin, }) : super(key: key); @override Widget build(BuildContext context) { - return Container( - constraints: const BoxConstraints(maxWidth: 100), - margin: margin, + return Padding( + padding: const EdgeInsetsDirectional.only(start: 16), child: Text( emailSelected.getReceivedAt( Localizations.localeOf(context).toLanguageTag(), diff --git a/lib/features/mailbox_dashboard/presentation/model/search/advanced_search_filter.dart b/lib/features/mailbox_dashboard/presentation/model/search/advanced_search_filter.dart index 88383c4ca..535faae3a 100644 --- a/lib/features/mailbox_dashboard/presentation/model/search/advanced_search_filter.dart +++ b/lib/features/mailbox_dashboard/presentation/model/search/advanced_search_filter.dart @@ -16,9 +16,9 @@ enum AdvancedSearchFilterField { String getTitle(BuildContext context) { switch (this) { case AdvancedSearchFilterField.from: - return AppLocalizations.of(context).form; + return AppLocalizations.of(context).from_email_address_prefix; case AdvancedSearchFilterField.to: - return AppLocalizations.of(context).to; + return AppLocalizations.of(context).to_email_address_prefix; case AdvancedSearchFilterField.subject: return AppLocalizations.of(context).subject; case AdvancedSearchFilterField.hasKeyword: diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index 00aef0f90..d86c70184 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -1871,24 +1871,12 @@ "placeholders_order": [], "placeholders": {} }, - "form": "من", - "@form": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "subject": "الموضوع", "@subject": { "type": "text", "placeholders_order": [], "placeholders": {} }, - "to": "إلى", - "@to": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "hasTheWords": "لديه الكلمات", "@hasTheWords": { "type": "text", diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index a36ce351b..059cd20c8 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -1439,18 +1439,6 @@ "placeholders_order": [], "placeholders": {} }, - "form": "From", - "@form": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, - "to": "To", - "@to": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "subject": "Subject", "@subject": { "type": "text", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 09446f2eb..c8fc94a8b 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -108,7 +108,7 @@ "placeholders_order": [], "placeholders": {} }, - "to_email_address_prefix": "Pour", + "to_email_address_prefix": "À", "@to_email_address_prefix": { "type": "text", "placeholders_order": [], @@ -1174,18 +1174,6 @@ "placeholders_order": [], "placeholders": {} }, - "form": "De", - "@form": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, - "to": "À", - "@to": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "hasTheWords": "Contient les mots", "@hasTheWords": { "type": "text", @@ -2734,7 +2722,7 @@ "placeholders_order": [], "placeholders": {} }, - "titleRecipientSendingEmail": "Pour : {recipients}", + "titleRecipientSendingEmail": "À: {recipients}", "@titleRecipientSendingEmail": { "type": "text", "placeholders_order": [ diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index 0307e8425..0d0bbab89 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1335,18 +1335,6 @@ "placeholders_order": [], "placeholders": {} }, - "form": "Da", - "@form": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, - "to": "A", - "@to": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "subject": "Oggetto", "@subject": { "type": "text", diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index 01b8170ad..b9e68ffe9 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2024-03-13T15:04:05.816015", + "@@last_modified": "2024-03-15T11:06:05.333495", "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -1440,18 +1440,6 @@ "placeholders_order": [], "placeholders": {} }, - "form": "From", - "@form": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, - "to": "To", - "@to": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "subject": "Subject", "@subject": { "type": "text", diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 2b4a2fe25..adfffc5dd 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1336,12 +1336,6 @@ "placeholders_order": [], "placeholders": {} }, - "form": "От", - "@form": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "subject": "Тема", "@subject": { "type": "text", @@ -1450,12 +1444,6 @@ "placeholders_order": [], "placeholders": {} }, - "to": "Кому", - "@to": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "saveAndClose": "Сохранить и закрыть", "@saveAndClose": { "type": "text", diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb index 94c8ce821..56d2120dd 100644 --- a/lib/l10n/intl_vi.arb +++ b/lib/l10n/intl_vi.arb @@ -748,18 +748,6 @@ "placeholders_order": [], "placeholders": {} }, - "form": "Từ", - "@form": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, - "to": "Tới", - "@to": { - "type": "text", - "placeholders_order": [], - "placeholders": {} - }, "subject": "Tiêu đề", "@subject": { "type": "text", diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index e916831a6..76e3303b0 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -1457,20 +1457,6 @@ class AppLocalizations { name: 'wrongUrlMessage'); } - String get form { - return Intl.message( - 'From', - name: 'form', - ); - } - - String get to { - return Intl.message( - 'To', - name: 'to', - ); - } - String get subject { return Intl.message( 'Subject', diff --git a/model/lib/extensions/email_extension.dart b/model/lib/extensions/email_extension.dart index 8bc2423d8..f53f45cff 100644 --- a/model/lib/extensions/email_extension.dart +++ b/model/lib/extensions/email_extension.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:collection/collection.dart'; +import 'package:core/domain/extensions/datetime_extension.dart'; import 'package:core/utils/app_logger.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; @@ -44,6 +45,17 @@ extension EmailExtension on Email { mailboxCurrent?.isSent == false; } + String getReceivedAt({required String newLocale, String? pattern}) { + log('EmailExtension::getReceivedAt: newLocale = $newLocale | pattern = $pattern'); + if (receivedAt != null) { + return receivedAt!.formatDateToLocal( + pattern: pattern ?? receivedAt!.value.toLocal().toPattern(), + locale: newLocale + ); + } + return ''; + } + Set getRecipientEmailAddressList() { final listEmailAddress = {}; final listToAddress = to.getListAddress() ?? []; diff --git a/model/lib/extensions/presentation_email_extension.dart b/model/lib/extensions/presentation_email_extension.dart index 6a183459b..efab88131 100644 --- a/model/lib/extensions/presentation_email_extension.dart +++ b/model/lib/extensions/presentation_email_extension.dart @@ -29,6 +29,7 @@ extension PresentationEmailExtension on PresentationEmail { int numberOfAllEmailAddress() => to.numberEmailAddress() + cc.numberEmailAddress() + bcc.numberEmailAddress(); String getReceivedAt(String newLocale, {String? pattern}) { + log('PresentationEmailExtension::getReceivedAt: newLocale = $newLocale | pattern = $pattern'); final emailTime = receivedAt; if (emailTime != null) { return emailTime.formatDateToLocal(