TF-1812 Add SendingEmailHiveCache to store sending email

(cherry picked from commit 7ff4c951b843f7a844e0dd4f0667b85b7fb0b710)
This commit is contained in:
dab246
2023-05-24 13:05:44 +07:00
committed by Dat Vu
parent 1bbbbe191c
commit 0b6195f02a
6 changed files with 136 additions and 0 deletions
@@ -17,12 +17,14 @@ class CachingConstants {
static const int ATTACHMENT_HIVE_CACHE_ID = 15;
static const int EMAIL_HEADER_HIVE_CACHE_ID = 16;
static const int DETAILED_EMAIL_HIVE_CACHE_ID = 17;
static const int SENDING_EMAIL_HIVE_CACHE_ID = 18;
static const String fcmCacheBoxName = 'fcm_cache_box';
static const String incomingEmailedCacheBoxName = 'incoming_emailed_cache_box';
static const String incomingEmailedContentFolderName = 'incoming_emailed';
static const String openedEmailContentFolderName = 'opened_email';
static const String openedEmailCacheBoxName = 'opened_email_cache_box';
static const String sendingEmailCacheBoxName = 'sending_email_cache_box';
static const int maxNumberNewEmailsForOffline = 10;
static const int maxNumberOpenedEmailsForOffline = 30;
@@ -0,0 +1,22 @@
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/sending_email.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_email_hive_cache.dart';
extension SendingEmailExtension on SendingEmail {
SendingEmailHiveCache toHiveCache() {
return SendingEmailHiveCache(
sendingId,
email.toJson(),
emailActionType.name,
sentMailboxId?.asString,
emailIdDestroyed?.asString,
emailIdAnsweredOrForwarded?.asString,
identityId?.asString,
mailboxNameRequest?.name,
creationIdRequest?.value
);
}
}
@@ -0,0 +1,43 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/email/email_action_type.dart';
class SendingEmail with EquatableMixin {
final String sendingId;
final Email email;
final MailboxId? sentMailboxId;
final EmailId? emailIdDestroyed;
final EmailId? emailIdAnsweredOrForwarded;
final IdentityId? identityId;
final EmailActionType emailActionType;
final MailboxName? mailboxNameRequest;
final Id? creationIdRequest;
SendingEmail({
required this.sendingId,
required this.email,
required this.emailActionType,
this.sentMailboxId,
this.emailIdDestroyed,
this.emailIdAnsweredOrForwarded,
this.identityId,
this.mailboxNameRequest,
this.creationIdRequest
});
@override
List<Object?> get props => [
sendingId,
email,
emailActionType,
sentMailboxId,
emailIdDestroyed,
emailIdAnsweredOrForwarded,
identityId,
mailboxNameRequest,
creationIdRequest
];
}
@@ -0,0 +1,62 @@
import 'package:equatable/equatable.dart';
import 'package:hive/hive.dart';
import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart';
part 'sending_email_hive_cache.g.dart';
@HiveType(typeId: CachingConstants.SENDING_EMAIL_HIVE_CACHE_ID)
class SendingEmailHiveCache extends HiveObject with EquatableMixin {
@HiveField(0)
final String sendingId;
@HiveField(1)
final Map<String, dynamic> emailData;
@HiveField(2)
final String emailActionType;
@HiveField(3)
final String? sentMailboxId;
@HiveField(4)
final String? emailIdDestroyed;
@HiveField(5)
final String? emailIdAnsweredOrForwarded;
@HiveField(6)
final String? identityId;
@HiveField(7)
final String? mailboxNameRequest;
@HiveField(8)
final String? creationIdRequest;
SendingEmailHiveCache(
this.sendingId,
this.emailData,
this.emailActionType,
this.sentMailboxId,
this.emailIdDestroyed,
this.emailIdAnsweredOrForwarded,
this.identityId,
this.mailboxNameRequest,
this.creationIdRequest
);
@override
List<Object?> get props => [
sendingId,
emailData,
emailActionType,
sentMailboxId,
emailIdDestroyed,
emailIdAnsweredOrForwarded,
identityId,
mailboxNameRequest,
creationIdRequest
];
}
@@ -0,0 +1,6 @@
import 'package:jmap_dart_client/jmap/identities/identity.dart';
extension IdentityIdExtension on IdentityId {
String get asString => id.value;
}
+1
View File
@@ -58,6 +58,7 @@ export 'extensions/list_identity_id_extension.dart';
export 'extensions/email_id_extensions.dart';
export 'extensions/account_id_extensions.dart';
export 'extensions/account_extension.dart';
export 'extensions/identity_id_extension.dart';
// Identity
export 'identity/identity_request_dto.dart';
export 'mailbox/expand_mode.dart';