TF-3385 Optimize misc

This commit is contained in:
DatDang
2025-01-03 17:00:16 +07:00
committed by Dat H. Pham
parent 0248b9138c
commit ee63f239e7
4 changed files with 37 additions and 30 deletions
@@ -244,19 +244,21 @@ class MailboxRepositoryImpl extends MailboxRepository {
totalEmailUnread,
onProgressController);
try {
await mapDataSource[DataSourceType.local]!.markAsMailboxRead(
session,
accountId,
mailboxId,
totalEmailUnread - result.length,
onProgressController,
);
await emailDataSource?.markAsRead(
session,
accountId,
result,
ReadActions.markAsRead,
);
await Future.wait([
mapDataSource[DataSourceType.local]!.markAsMailboxRead(
session,
accountId,
mailboxId,
totalEmailUnread - result.length,
onProgressController,
),
emailDataSource?.markAsRead(
session,
accountId,
result,
ReadActions.markAsRead,
) ?? Future.value(),
]);
} catch (e) {
logError('MailboxRepositoryImpl::markAsMailboxRead: Exception: $e');
}
@@ -95,12 +95,14 @@ class EmailCacheManager {
return _emailCacheClient.insertItem(keyCache, emailCache);
}
Future<void> storeMultipleEmails(AccountId accountId, UserName userName, List<EmailCache> emailsCache) {
return Future.wait(emailsCache.map((emailCache) => storeEmail(
accountId,
userName,
emailCache,
)));
Future<void> storeMultipleEmails(AccountId accountId, UserName userName, List<EmailCache> emailsCache) async {
final emailsToCache = Map.fromEntries(emailsCache.map(
(emailCache) => MapEntry(
TupleKey(emailCache.id, accountId.asString, userName.value).encodeKey,
emailCache,
),
));
await _emailCacheClient.insertMultipleItem(emailsToCache);
}
Future<EmailCache> getStoredEmail(AccountId accountId, UserName userName, EmailId emailId) async {
@@ -369,7 +369,9 @@ class ThreadController extends BaseController with EmailActionController {
destinationMailboxId: reactionState.destinationMailboxId,
moveAction: reactionState.moveAction,
);
_checkIfCurrentMailboxCanLoadMore();
WidgetsBinding.instance.addPostFrameCallback((_) {
_checkIfCurrentMailboxCanLoadMore();
});
} else if (reactionState is DeleteEmailPermanentlySuccess
|| reactionState is DeleteMultipleEmailsPermanentlyAllSuccess
|| reactionState is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure
@@ -396,7 +398,7 @@ class ThreadController extends BaseController with EmailActionController {
final currentMailbox = mailboxDashBoardController.selectedMailbox.value;
if (currentMailbox == null) return;
final totalEmailsCount = currentMailbox.totalEmails?.value.value ?? 0;
final totalEmailsCount = currentMailbox.countTotalEmails;
if (totalEmailsCount == 0
|| mailboxDashBoardController.emailsInCurrentMailbox.isNotEmpty
) return;
@@ -22,16 +22,17 @@ extension ListPresentationEmailExtension on List<PresentationEmail> {
List<EmailId> get listEmailIds => map((email) => email.id).whereNotNull().toList();
Map<MailboxId, List<EmailId>> get emailIdsByMailboxId => Map.from(
where((email) => email.mailboxContain?.mailboxId != null && email.id != null)
.fold(<MailboxId, List<EmailId>>{}, (combine, email) {
final mailboxId = email.mailboxContain!.mailboxId!;
combine[mailboxId] ??= [];
combine[mailboxId]!.add(email.id!);
return combine;
Map<MailboxId, List<EmailId>> get emailIdsByMailboxId {
final Map<MailboxId, List<EmailId>> result = {};
for (final email in this) {
final mailboxId = email.mailboxContain?.mailboxId;
final emailId = email.id;
if (mailboxId != null && emailId != null) {
(result[mailboxId] ??= []).add(emailId);
}
),
);
}
return result;
}
bool isAllCanDeletePermanently(Map<MailboxId, PresentationMailbox> mapMailbox) {
final listMailboxContain = map((email) => email.findMailboxContain(mapMailbox))