Files
workavia-mail-front/lib/features/thread/data/extensions/email_cache_extension.dart
T
dab246 7df56f3f66 TF-1857 Add headerCalendarEvent to email cached
(cherry picked from commit 6d884bb6db5365c6308404fb5d98fd356be4109e)
2023-07-31 19:24:25 +07:00

51 lines
2.4 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,
headerCalendarEvent: headerCalendarEvent != null
? Map.fromIterables(headerCalendarEvent!.keys.map((value) => IndividualHeaderIdentifier(value)), headerCalendarEvent!.values)
: 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;
}
}