TF-2520 Add abstract printEmail method in repository

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-02-28 17:11:36 +07:00
committed by Dat H. Pham
parent a5446b8417
commit 2892d7586d
3 changed files with 88 additions and 0 deletions
@@ -0,0 +1,5 @@
import 'package:tmail_ui_user/features/email/domain/model/email_print.dart';
abstract class PrintFileDataSource {
Future<void> printEmailToPDF(EmailPrint emailPrint);
}
@@ -0,0 +1,80 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.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;
final String ccPrefix;
final String bccPrefix;
final String replyToPrefix;
final String titleAttachment;
final List<Attachment>? attachments;
final String? toAddress;
final String? ccAddress;
final String? bccAddress;
final String? replyToAddress;
EmailPrint({
required this.appName,
required this.userName,
required this.emailInformation,
required this.emailContent,
required this.locale,
required this.toPrefix,
required this.ccPrefix,
required this.bccPrefix,
required this.replyToPrefix,
required this.titleAttachment,
this.attachments,
this.toAddress,
this.ccAddress,
this.bccAddress,
this.replyToAddress,
});
@override
List<Object?> get props => [
appName,
userName,
emailInformation,
emailContent,
locale,
toPrefix,
ccPrefix,
bccPrefix,
replyToPrefix,
titleAttachment,
attachments,
toAddress,
ccAddress,
bccAddress,
replyToAddress,
];
}
extension EmailPrintExtension on EmailPrint {
EmailPrint fromEmailContent(String newEmailContent) {
return EmailPrint(
appName: appName,
userName: userName,
emailInformation: emailInformation,
emailContent: newEmailContent,
titleAttachment: titleAttachment,
locale: locale,
toPrefix: toPrefix,
ccPrefix: ccPrefix,
bccPrefix: bccPrefix,
replyToPrefix: replyToPrefix,
attachments: attachments,
toAddress: toAddress,
ccAddress: ccAddress,
bccAddress: bccAddress,
replyToAddress: replyToAddress,
);
}
}
@@ -21,6 +21,7 @@ import 'package:model/email/mark_star_action.dart';
import 'package:model/email/read_actions.dart';
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
import 'package:tmail_ui_user/features/email/domain/model/email_print.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_message_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
@@ -112,4 +113,6 @@ abstract class EmailRepository {
Future<EmailRecoveryAction> restoreDeletedMessage(RestoredDeletedMessageRequest restoredDeletedMessageRequest);
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId);
Future<void> printEmail(EmailPrint emailPrint);
}