b3ce1f076c
TF-3881 Thread Detail Unsubscribe context menu TF-3881 Thread Detail Update date time format TF-3881 Thread Detail Update sender receiver spacing TF-3881 Thread Detail Add messageId and references to presentation email TF-3881 Thread Detail Filter created email on refresh TF-3881 Thread Detail Fix CI TF-3881 Thread Detail Fix previous action throws out of index TF-3881 Thread Detail Update sender receiver spacing TF-3881 Thread Detail Adjust email actions when expanded TF-3881 Thread Detail Adjust days ago received time TF-3881 Thread Detail Fix debouncer when update setting TF-3881 Thread Detail Adjust days ago received time TF-3881 Thread Detail Adjust email actions when expanded TF-3881 Thread Detail Hide next previous if not in range TF-3881 Thread Detail Arrange more action according to text direction TF-3881 Thread Detail Hide next previous if not in range TF-3881 Thread Detail Fix move email on tablet
75 lines
3.5 KiB
Dart
75 lines
3.5 KiB
Dart
|
|
import 'package:core/core.dart';
|
|
import 'package:jmap_dart_client/jmap/core/id.dart';
|
|
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
|
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
|
import 'package:jmap_dart_client/jmap/mail/email/individual_header_identifier.dart';
|
|
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
|
import 'package:tmail_ui_user/features/cleanup/domain/model/email_cleanup_rule.dart';
|
|
import 'package:tmail_ui_user/features/thread/data/model/email_cache.dart';
|
|
import 'package:tmail_ui_user/features/thread/data/extensions/email_address_hive_cache_extension.dart';
|
|
|
|
extension EmailCacheExtension on EmailCache {
|
|
Email toEmail() {
|
|
return Email(
|
|
id: EmailId(Id(id)),
|
|
keywords: keywords != null
|
|
? Map.fromIterables(keywords!.keys.map((value) => KeyWordIdentifier(value)), keywords!.values)
|
|
: null,
|
|
size: size != null ? UnsignedInt(size!) : null,
|
|
receivedAt: receivedAt != null ? UTCDate(receivedAt!) : null,
|
|
hasAttachment: hasAttachment,
|
|
preview: preview,
|
|
subject: subject,
|
|
sentAt: sentAt != null ? UTCDate(sentAt!) : null,
|
|
from: from?.map((emailAddressCache) => emailAddressCache.toEmailAddress()).toSet(),
|
|
to: to?.map((emailAddressCache) => emailAddressCache.toEmailAddress()).toSet(),
|
|
cc: cc?.map((emailAddressCache) => emailAddressCache.toEmailAddress()).toSet(),
|
|
bcc: bcc?.map((emailAddressCache) => emailAddressCache.toEmailAddress()).toSet(),
|
|
replyTo: replyTo?.map((emailAddressCache) => emailAddressCache.toEmailAddress()).toSet(),
|
|
mailboxIds: mailboxIds != null
|
|
? Map.fromIterables(mailboxIds!.keys.map((value) => MailboxId(Id(value))), mailboxIds!.values)
|
|
: null,
|
|
threadId: threadId == null ? null : ThreadId(Id(threadId!)),
|
|
headerCalendarEvent: headerCalendarEvent != null
|
|
? Map.fromIterables(headerCalendarEvent!.keys.map((value) => IndividualHeaderIdentifier(value)), headerCalendarEvent!.values)
|
|
: null,
|
|
blobId: blobId != null ? Id(blobId!) : null,
|
|
xPriorityHeader: xPriorityHeader != null
|
|
? Map.fromIterables(
|
|
xPriorityHeader!.keys.map((value) => IndividualHeaderIdentifier(value)),
|
|
xPriorityHeader!.values)
|
|
: null,
|
|
importanceHeader: importanceHeader != null
|
|
? Map.fromIterables(
|
|
importanceHeader!.keys.map((value) => IndividualHeaderIdentifier(value)),
|
|
importanceHeader!.values)
|
|
: null,
|
|
priorityHeader: priorityHeader != null
|
|
? Map.fromIterables(
|
|
priorityHeader!.keys.map((value) => IndividualHeaderIdentifier(value)),
|
|
priorityHeader!.values)
|
|
: null,
|
|
listUnsubscribeHeader: unsubscribeHeader != null
|
|
? Map.fromIterables(
|
|
unsubscribeHeader!.keys.map((value) => IndividualHeaderIdentifier(value)),
|
|
unsubscribeHeader!.values)
|
|
: null,
|
|
messageId: messageId != null ? MessageIdsHeaderValue(messageId!.toSet()) : null,
|
|
references: references != null ? MessageIdsHeaderValue(references!.toSet()) : null,
|
|
);
|
|
}
|
|
|
|
bool expireTimeCaching(EmailCleanupRule cleanupRule) {
|
|
final currentTime = DateTime.now();
|
|
if (receivedAt != null) {
|
|
final countDay = currentTime.daysBetween(receivedAt!.toLocal());
|
|
if (countDay >= cleanupRule.cachingEmailPeriod.countDay) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
} |