TF-145 Add domain layer for getAllEmail in Caching

This commit is contained in:
dab246
2021-10-07 15:01:23 +07:00
committed by Dat H. Pham
parent 0ac2460bdf
commit 3cac5e4e83
10 changed files with 166 additions and 17 deletions
@@ -0,0 +1,35 @@
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
import 'package:jmap_dart_client/jmap/core/extensions/utc_date_extension.dart';
import 'package:jmap_dart_client/jmap/core/extensions/string_extension.dart';
import 'package:jmap_dart_client/jmap/core/extensions/unsigned_int_extension.dart';
extension ListEmailExtension on List<Email> {
Email? findEmail(EmailId emailId) {
try {
return firstWhere((email) => email.id == emailId);
} catch (e) {
return null;
}
}
void sortBy(Comparator comparator) {
sort((email1, email2) {
if (comparator.property == EmailComparatorProperty.sentAt
|| comparator.property == EmailComparatorProperty.receivedAt) {
final emailTime1 = email1.sentAt ?? email1.receivedAt;
final emailTime2 = email2.sentAt ?? email2.receivedAt;
return emailTime1.compareToSort(emailTime2, comparator.isAscending);
} if (comparator.property == EmailComparatorProperty.subject) {
return email1.subject.compareToSort(email2.subject, comparator.isAscending);
} if (comparator.property == EmailComparatorProperty.size) {
return email1.size.compareToSort(email2.size, comparator.isAscending);
} else {
return 0;
}
});
}
}