From f5874a7e49ecb37cb2b6b15aa43e90011dd9e9c3 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 7 Oct 2021 00:20:56 +0700 Subject: [PATCH] TF-145 Create object EmailCache --- .../utils/caching_constants.dart | 2 + .../mailbox/data/model/mailbox_cache.dart | 2 +- .../data/model/mailbox_rights_cache.dart | 2 +- .../mailbox/data/model/state_cache.dart | 2 +- .../mailbox/data/model/state_type.dart | 2 +- .../data/model/email_address_hive_cache.dart | 20 +++++ .../thread/data/model/email_cache.dart | 85 +++++++++++++++++++ 7 files changed, 111 insertions(+), 4 deletions(-) rename lib/features/{mailbox/data => caching}/utils/caching_constants.dart (67%) create mode 100644 lib/features/thread/data/model/email_address_hive_cache.dart create mode 100644 lib/features/thread/data/model/email_cache.dart diff --git a/lib/features/mailbox/data/utils/caching_constants.dart b/lib/features/caching/utils/caching_constants.dart similarity index 67% rename from lib/features/mailbox/data/utils/caching_constants.dart rename to lib/features/caching/utils/caching_constants.dart index bf4db343f..15f29baa9 100644 --- a/lib/features/mailbox/data/utils/caching_constants.dart +++ b/lib/features/caching/utils/caching_constants.dart @@ -4,4 +4,6 @@ class CachingConstants { static const int MAILBOX_RIGHTS_CACHE_IDENTIFY = 2; static const int STATE_CACHE_IDENTIFY = 3; static const int STATE_TYPE_IDENTIFY = 4; + static const int EMAIL_CACHE_IDENTIFY = 5; + static const int EMAIL_ADDRESS_HIVE_CACHE_IDENTIFY = 6; } \ No newline at end of file diff --git a/lib/features/mailbox/data/model/mailbox_cache.dart b/lib/features/mailbox/data/model/mailbox_cache.dart index 4c2efcddf..a85f5d4df 100644 --- a/lib/features/mailbox/data/model/mailbox_cache.dart +++ b/lib/features/mailbox/data/model/mailbox_cache.dart @@ -1,8 +1,8 @@ import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_rights_cache.dart'; -import 'package:tmail_ui_user/features/mailbox/data/utils/caching_constants.dart'; part 'mailbox_cache.g.dart'; diff --git a/lib/features/mailbox/data/model/mailbox_rights_cache.dart b/lib/features/mailbox/data/model/mailbox_rights_cache.dart index bb5b7186d..5baeacbd1 100644 --- a/lib/features/mailbox/data/model/mailbox_rights_cache.dart +++ b/lib/features/mailbox/data/model/mailbox_rights_cache.dart @@ -1,7 +1,7 @@ import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; -import 'package:tmail_ui_user/features/mailbox/data/utils/caching_constants.dart'; +import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; part 'mailbox_rights_cache.g.dart'; diff --git a/lib/features/mailbox/data/model/state_cache.dart b/lib/features/mailbox/data/model/state_cache.dart index 7aa4771f3..f31ed5f3d 100644 --- a/lib/features/mailbox/data/model/state_cache.dart +++ b/lib/features/mailbox/data/model/state_cache.dart @@ -1,8 +1,8 @@ import 'package:equatable/equatable.dart'; import 'package:hive/hive.dart'; +import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; import 'package:tmail_ui_user/features/mailbox/data/model/state_type.dart'; -import 'package:tmail_ui_user/features/mailbox/data/utils/caching_constants.dart'; part 'state_cache.g.dart'; diff --git a/lib/features/mailbox/data/model/state_type.dart b/lib/features/mailbox/data/model/state_type.dart index 699c5fd5a..49380192a 100644 --- a/lib/features/mailbox/data/model/state_type.dart +++ b/lib/features/mailbox/data/model/state_type.dart @@ -1,6 +1,6 @@ import 'package:hive/hive.dart'; -import 'package:tmail_ui_user/features/mailbox/data/utils/caching_constants.dart'; +import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; part 'state_type.g.dart'; diff --git a/lib/features/thread/data/model/email_address_hive_cache.dart b/lib/features/thread/data/model/email_address_hive_cache.dart new file mode 100644 index 000000000..c44732201 --- /dev/null +++ b/lib/features/thread/data/model/email_address_hive_cache.dart @@ -0,0 +1,20 @@ +import 'package:equatable/equatable.dart'; +import 'package:hive/hive.dart'; +import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; + +part 'email_address_hive_cache.g.dart'; + +@HiveType(typeId: CachingConstants.EMAIL_ADDRESS_HIVE_CACHE_IDENTIFY) +class EmailAddressHiveCache extends HiveObject with EquatableMixin { + + @HiveField(0) + final String? name; + + @HiveField(1) + final String? email; + + EmailAddressHiveCache(this.name, this.email); + + @override + List get props => [name, email]; +} \ No newline at end of file diff --git a/lib/features/thread/data/model/email_cache.dart b/lib/features/thread/data/model/email_cache.dart new file mode 100644 index 000000000..ed947953f --- /dev/null +++ b/lib/features/thread/data/model/email_cache.dart @@ -0,0 +1,85 @@ + +import 'package:equatable/equatable.dart'; +import 'package:hive/hive.dart'; +import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; +import 'package:tmail_ui_user/features/thread/data/model/email_address_hive_cache.dart'; + +part 'email_cache.g.dart'; + +@HiveType(typeId: CachingConstants.EMAIL_CACHE_IDENTIFY) +class EmailCache extends HiveObject with EquatableMixin { + + @HiveField(0) + final String id; + + @HiveField(1) + final Map? keywords; + + @HiveField(2) + final int? size; + + @HiveField(3) + final DateTime? receivedAt; + + @HiveField(4) + final bool? hasAttachment; + + @HiveField(5) + final String? preview; + + @HiveField(6) + final String? subject; + + @HiveField(7) + final DateTime? sentAt; + + @HiveField(8) + final List? from; + + @HiveField(9) + final List? to; + + @HiveField(10) + final List? cc; + + @HiveField(11) + final List? bcc; + + @HiveField(12) + final List? replyTo; + + EmailCache( + this.id, + { + this.keywords, + this.size, + this.receivedAt, + this.hasAttachment, + this.preview, + this.subject, + this.sentAt, + this.from, + this.to, + this.cc, + this.bcc, + this.replyTo, + } + ); + + @override + List get props => [ + id, + subject, + from, + to, + cc, + bcc, + keywords, + size, + receivedAt, + sentAt, + replyTo, + preview, + hasAttachment + ]; +} \ No newline at end of file