TF-3515 Add save email as template feature

This commit is contained in:
DatDang
2025-02-25 16:10:20 +07:00
committed by Dat H. Pham
parent ef1f979c4b
commit 7f09f9ceb4
40 changed files with 1079 additions and 54 deletions
@@ -31,7 +31,9 @@ class CreateEmailRequest with EquatableMixin {
final MailboxId? outboxMailboxId;
final MailboxId? sentMailboxId;
final MailboxId? draftsMailboxId;
final MailboxId? templateMailboxId;
final EmailId? draftsEmailId;
final EmailId? templateEmailId;
final EmailId? answerForwardEmailId;
final EmailId? unsubscribeEmailId;
final MessageIdsHeaderValue? messageId;
@@ -64,7 +66,9 @@ class CreateEmailRequest with EquatableMixin {
this.outboxMailboxId,
this.sentMailboxId,
this.draftsMailboxId,
this.templateMailboxId,
this.draftsEmailId,
this.templateEmailId,
this.answerForwardEmailId,
this.unsubscribeEmailId,
this.messageId,
@@ -99,7 +103,9 @@ class CreateEmailRequest with EquatableMixin {
outboxMailboxId,
sentMailboxId,
draftsMailboxId,
templateMailboxId,
draftsEmailId,
templateEmailId,
answerForwardEmailId,
unsubscribeEmailId,
references,
@@ -6,10 +6,10 @@ import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:model/email/attachment.dart';
part 'saved_email_draft.g.dart';
part 'saved_composing_email.g.dart';
@JsonSerializable(includeIfNull: false, explicitToJson: true)
class SavedEmailDraft with EquatableMixin {
class SavedComposingEmail with EquatableMixin {
final String content;
final String subject;
final Set<EmailAddress> toRecipients;
@@ -21,7 +21,7 @@ class SavedEmailDraft with EquatableMixin {
final bool hasReadReceipt;
final bool isMarkAsImportant;
SavedEmailDraft({
SavedComposingEmail({
required this.content,
required this.subject,
required this.toRecipients,
@@ -34,12 +34,26 @@ class SavedEmailDraft with EquatableMixin {
this.isMarkAsImportant = false,
});
factory SavedEmailDraft.fromJson(Map<String, dynamic> json) => _$SavedEmailDraftFromJson(json);
factory SavedComposingEmail.fromJson(Map<String, dynamic> json) => _$SavedComposingEmailFromJson(json);
Map<String, dynamic> toJson() => _$SavedEmailDraftToJson(this);
Map<String, dynamic> toJson() => _$SavedComposingEmailToJson(this);
String asString() => jsonEncode(toJson());
factory SavedComposingEmail.empty() {
return SavedComposingEmail(
subject: '',
content: '',
toRecipients: {},
ccRecipients: {},
bccRecipients: {},
replyToRecipients: {},
attachments: [],
identity: null,
hasReadReceipt: false,
);
}
@override
List<Object?> get props => [
content,