TF-3427 Implement print draft
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import 'package:core/data/model/print_attachment.dart';
|
||||
import 'package:core/domain/extensions/datetime_extension.dart';
|
||||
import 'package:core/presentation/extensions/html_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/html_transformer/transform_configuration.dart';
|
||||
@@ -8,7 +7,6 @@ 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/email_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource/print_file_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/local/html_analyzer.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/email_print.dart';
|
||||
@@ -37,14 +35,6 @@ class PrintFileDataSourceImpl extends PrintFileDataSource {
|
||||
final emailContentEscaped = await _transformHtmlEmailContent(
|
||||
emailPrint.emailContent);
|
||||
|
||||
final sender = emailPrint.emailInformation.from?.isNotEmpty == true
|
||||
? emailPrint.emailInformation.from!.first
|
||||
: null;
|
||||
final receiveTime = emailPrint.emailInformation.getReceivedAt(
|
||||
newLocale: emailPrint.locale,
|
||||
pattern: emailPrint.emailInformation.receivedAt?.value.toLocal().toPatternForPrinting(emailPrint.locale)
|
||||
);
|
||||
|
||||
final List<PrintAttachment> listPrintAttachment = [];
|
||||
|
||||
if (emailPrint.attachments?.isNotEmpty == true) {
|
||||
@@ -62,11 +52,11 @@ class PrintFileDataSourceImpl extends PrintFileDataSource {
|
||||
return await _printUtils.printEmail(
|
||||
appName: emailPrint.appName,
|
||||
userName: emailPrint.userName,
|
||||
subject: emailPrint.emailInformation.subject?.escapeLtGtHtmlString() ?? '',
|
||||
subject: emailPrint.subject?.escapeLtGtHtmlString() ?? '',
|
||||
emailContent: emailContentEscaped,
|
||||
senderName: sender?.name.escapeLtGtHtmlString() ?? '',
|
||||
senderEmailAddress: sender?.email ?? '',
|
||||
dateTime: receiveTime,
|
||||
senderName: emailPrint.sender?.name.escapeLtGtHtmlString() ?? '',
|
||||
senderEmailAddress: emailPrint.sender?.email ?? '',
|
||||
dateTime: emailPrint.receiveTime,
|
||||
fromPrefix: emailPrint.fromPrefix,
|
||||
toPrefix: emailPrint.toPrefix,
|
||||
ccPrefix: emailPrint.ccPrefix,
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/email/attachment.dart';
|
||||
|
||||
class EmailPrint with EquatableMixin {
|
||||
final String appName;
|
||||
final String userName;
|
||||
final Email emailInformation;
|
||||
final String emailContent;
|
||||
final String locale;
|
||||
final String toPrefix;
|
||||
@@ -14,16 +13,18 @@ class EmailPrint with EquatableMixin {
|
||||
final String bccPrefix;
|
||||
final String replyToPrefix;
|
||||
final String titleAttachment;
|
||||
final String receiveTime;
|
||||
final List<Attachment>? attachments;
|
||||
final String? toAddress;
|
||||
final String? ccAddress;
|
||||
final String? bccAddress;
|
||||
final String? replyToAddress;
|
||||
final EmailAddress? sender;
|
||||
final String? subject;
|
||||
|
||||
EmailPrint({
|
||||
required this.appName,
|
||||
required this.userName,
|
||||
required this.emailInformation,
|
||||
required this.emailContent,
|
||||
required this.locale,
|
||||
required this.fromPrefix,
|
||||
@@ -32,18 +33,20 @@ class EmailPrint with EquatableMixin {
|
||||
required this.bccPrefix,
|
||||
required this.replyToPrefix,
|
||||
required this.titleAttachment,
|
||||
required this.receiveTime,
|
||||
this.attachments,
|
||||
this.toAddress,
|
||||
this.ccAddress,
|
||||
this.bccAddress,
|
||||
this.replyToAddress,
|
||||
this.sender,
|
||||
this.subject,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
appName,
|
||||
userName,
|
||||
emailInformation,
|
||||
emailContent,
|
||||
locale,
|
||||
fromPrefix,
|
||||
@@ -52,11 +55,14 @@ class EmailPrint with EquatableMixin {
|
||||
bccPrefix,
|
||||
replyToPrefix,
|
||||
titleAttachment,
|
||||
receiveTime,
|
||||
attachments,
|
||||
toAddress,
|
||||
ccAddress,
|
||||
bccAddress,
|
||||
replyToAddress,
|
||||
sender,
|
||||
subject,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -65,9 +71,9 @@ extension EmailPrintExtension on EmailPrint {
|
||||
return EmailPrint(
|
||||
appName: appName,
|
||||
userName: userName,
|
||||
emailInformation: emailInformation,
|
||||
emailContent: newEmailContent,
|
||||
titleAttachment: titleAttachment,
|
||||
receiveTime: receiveTime,
|
||||
locale: locale,
|
||||
fromPrefix: fromPrefix,
|
||||
toPrefix: toPrefix,
|
||||
@@ -79,6 +85,8 @@ extension EmailPrintExtension on EmailPrint {
|
||||
ccAddress: ccAddress,
|
||||
bccAddress: bccAddress,
|
||||
replyToAddress: replyToAddress,
|
||||
sender: sender,
|
||||
subject: subject,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ class PrintEmailInteractor {
|
||||
|
||||
Stream<Either<Failure, Success>> execute(EmailPrint emailPrint) async* {
|
||||
try {
|
||||
yield Right(PrintEmailLoading());
|
||||
await emailRepository.printEmail(emailPrint);
|
||||
yield Right(PrintEmailSuccess());
|
||||
} catch (e) {
|
||||
|
||||
@@ -1742,25 +1742,38 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
|
||||
_printEmailButtonState = ButtonState.disabled;
|
||||
|
||||
final locale = Localizations.localeOf(context);
|
||||
final appLocalizations = AppLocalizations.of(context);
|
||||
|
||||
consumeState(
|
||||
_printEmailInteractor.execute(
|
||||
EmailPrint(
|
||||
appName: AppLocalizations.of(context).app_name,
|
||||
appName: appLocalizations.app_name,
|
||||
userName: mailboxDashBoardController.userEmail,
|
||||
emailInformation: email.toEmail(),
|
||||
attachments: currentEmailLoaded.value!.attachments,
|
||||
emailContent: currentEmailLoaded.value!.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,
|
||||
replyToPrefix: AppLocalizations.of(context).replyToEmailAddressPrefix,
|
||||
titleAttachment: AppLocalizations.of(context).attachments.toLowerCase(),
|
||||
locale: locale.toLanguageTag(),
|
||||
fromPrefix: appLocalizations.from_email_address_prefix,
|
||||
toPrefix: appLocalizations.to_email_address_prefix,
|
||||
ccPrefix: appLocalizations.cc_email_address_prefix,
|
||||
bccPrefix: appLocalizations.bcc_email_address_prefix,
|
||||
replyToPrefix: appLocalizations.replyToEmailAddressPrefix,
|
||||
titleAttachment: appLocalizations.attachments.toLowerCase(),
|
||||
toAddress: email.to?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
ccAddress: email.cc?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
bccAddress: email.bcc?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
replyToAddress: email.replyTo?.listEmailAddressToString(isFullEmailAddress: true),
|
||||
sender: email.from?.isNotEmpty == true
|
||||
? email.from!.first
|
||||
: null,
|
||||
receiveTime: email.getReceivedAt(
|
||||
locale.toLanguageTag(),
|
||||
pattern: email.receivedAt
|
||||
?.value
|
||||
.toLocal()
|
||||
.toPatternForPrinting(locale.toLanguageTag()),
|
||||
),
|
||||
subject: email.subject,
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user