TF-78 Update state email in threads and count unread of current mailbox when back from EmailView

This commit is contained in:
dab246
2021-09-14 17:12:15 +07:00
committed by Dat H. Pham
parent 3219aedc70
commit 59ab5265fd
13 changed files with 259 additions and 63 deletions
@@ -1,4 +1,5 @@
import 'package:core/core.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
import 'package:model/model.dart';
extension PresentationEmailExtension on PresentationEmail {
@@ -12,4 +13,37 @@ extension PresentationEmailExtension on PresentationEmail {
}
return '';
}
PresentationEmail markAsReadPresentationEmail({required bool unRead}) {
var newKeyWord = keywords;
if (unRead) {
newKeyWord?.removeWhere((key, value) => key == KeyWordIdentifier.emailSeen);
} else {
if (newKeyWord == null) {
newKeyWord = {
KeyWordIdentifier.emailSeen: true
};
} else {
newKeyWord[KeyWordIdentifier.emailSeen] = true;
}
}
return PresentationEmail(
id,
keywords: newKeyWord,
size: size,
receivedAt: receivedAt,
hasAttachment: hasAttachment,
preview: preview,
subject: subject,
sentAt: sentAt,
from: from,
to: to,
cc: cc,
bcc: bcc,
replyTo: replyTo,
selectMode: selectMode
);
}
}
@@ -0,0 +1,23 @@
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/model.dart';
extension PresentationMailboxExtension on PresentationMailbox {
PresentationMailbox toPresentationMailbox({required UnsignedInt countUnRead}) {
return PresentationMailbox(
id,
name: name,
parentId: parentId,
role: role,
sortOrder: sortOrder,
totalEmails: totalEmails,
unreadEmails: UnreadEmails(countUnRead),
totalThreads: totalThreads,
unreadThreads: unreadThreads,
myRights: myRights,
isSubscribed: isSubscribed,
selectMode: selectMode
);
}
}
+1
View File
@@ -38,6 +38,7 @@ export 'extensions/presentation_account_extension.dart';
export 'extensions/user_profile_extension.dart';
export 'extensions/presentation_email_extension.dart';
export 'extensions/keyword_identifier_extension.dart';
export 'extensions/presentation_mailbox_extension.dart';
// Converter
export 'converter/avatar_id_converter.dart';