diff --git a/lib/features/email/data/datasource/print_file_datasource.dart b/lib/features/email/data/datasource/print_file_datasource.dart new file mode 100644 index 000000000..ba97a2bfa --- /dev/null +++ b/lib/features/email/data/datasource/print_file_datasource.dart @@ -0,0 +1,5 @@ +import 'package:tmail_ui_user/features/email/domain/model/email_print.dart'; + +abstract class PrintFileDataSource { + Future printEmailToPDF(EmailPrint emailPrint); +} \ No newline at end of file diff --git a/lib/features/email/domain/model/email_print.dart b/lib/features/email/domain/model/email_print.dart new file mode 100644 index 000000000..3e73d446f --- /dev/null +++ b/lib/features/email/domain/model/email_print.dart @@ -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? 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 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, + ); + } +} \ No newline at end of file diff --git a/lib/features/email/domain/repository/email_repository.dart b/lib/features/email/domain/repository/email_repository.dart index 222827e19..53bb1daf5 100644 --- a/lib/features/email/domain/repository/email_repository.dart +++ b/lib/features/email/domain/repository/email_repository.dart @@ -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 restoreDeletedMessage(RestoredDeletedMessageRequest restoredDeletedMessageRequest); Future getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId); + + Future printEmail(EmailPrint emailPrint); } \ No newline at end of file