TF-1842: Create extension for SendEmailRequest from SendingEmail

(cherry picked from commit e710c205b730d8120ebd8f9b4123cd8b52f1c530)
This commit is contained in:
HuyNguyen
2023-05-31 00:58:39 +07:00
committed by Dat Vu
parent ea1b2559ec
commit 56e89e3628
2 changed files with 35 additions and 2 deletions
@@ -3,6 +3,7 @@ import 'package:model/extensions/email_extension.dart';
import 'package:model/extensions/email_id_extensions.dart';
import 'package:model/extensions/identity_id_extension.dart';
import 'package:model/extensions/mailbox_id_extension.dart';
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
import 'package:tmail_ui_user/features/composer/domain/model/sending_email.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_email_hive_cache.dart';
@@ -21,4 +22,15 @@ extension SendingEmailExtension on SendingEmail {
creationIdRequest?.value
);
}
EmailRequest toEmailRequest() {
return EmailRequest(
email: email,
emailActionType: emailActionType,
sentMailboxId: sentMailboxId,
emailIdDestroyed: emailIdDestroyed,
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
identityId: identityId
);
}
}
@@ -1,5 +1,4 @@
import 'package:core/domain/extensions/datetime_extension.dart';
import 'dart:convert';
import 'package:equatable/equatable.dart';
import 'package:flutter_date_range_picker/flutter_date_range_picker.dart';
import 'package:jmap_dart_client/http/converter/email_id_nullable_converter.dart';
@@ -68,6 +67,28 @@ class SendingEmail with EquatableMixin {
return DateFormat(createTime.toPattern(), newLocale).format(createTime);
}
factory SendingEmail.fromJson(Map<String, dynamic> json) {
return SendingEmail(
sendingId: json['sendingId'] as String,
email: Email.fromJson(jsonDecode(json['email'])),
emailActionType: _getEmailActionType(json['emailActionType'] as String),
sentMailboxId: json['sentMailboxId'] != null ? const MailboxIdNullableConverter().fromJson(json['sentMailboxId'] as String?) : null,
emailIdDestroyed: json['emailIdDestroyed'] != null ? const EmailIdNullableConverter().fromJson(json['emailIdDestroyed'] as String?) : null,
emailIdAnsweredOrForwarded: json['emailIdAnsweredOrForwarded'] != null ? const EmailIdNullableConverter().fromJson(json['emailIdAnsweredOrForwarded'] as String?) : null,
identityId: json['identityId'] != null ? const IdentityIdNullableConverter().fromJson(json['identityId'] as String?) : null,
mailboxNameRequest: json['mailboxNameRequest'] != null ? MailboxName(json['mailboxNameRequest'] as String) : null,
creationIdRequest: json['creationIdRequest'] != null ? const IdNullableConverter().fromJson(json['creationIdRequest'] as String) : null,
);
}
static EmailActionType _getEmailActionType(String value) {
return EmailActionType.values.firstWhere(
(type) => type.toString().split('.').last == value,
orElse: () => throw ArgumentError('Invalid email action type: $value'),
);
}
@override
List<Object?> get props => [
sendingId,