Get spam mailbox cache by AccountId

(cherry picked from commit c35685bf34f5f4fbf28c4cbca9842c20dee61ffc)
This commit is contained in:
dab246
2023-04-25 15:23:52 +07:00
committed by Dat Vu
parent 6189edd777
commit 8414c0d819
11 changed files with 20 additions and 19 deletions
@@ -7,7 +7,6 @@ import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart';
import 'package:tmail_ui_user/features/mailbox/data/extensions/list_mailbox_cache_extension.dart'; import 'package:tmail_ui_user/features/mailbox/data/extensions/list_mailbox_cache_extension.dart';
import 'package:tmail_ui_user/features/mailbox/data/extensions/list_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/data/extensions/list_mailbox_extension.dart';
import 'package:tmail_ui_user/features/mailbox/data/extensions/list_mailbox_id_extension.dart'; import 'package:tmail_ui_user/features/mailbox/data/extensions/list_mailbox_id_extension.dart';
import 'package:tmail_ui_user/features/mailbox/data/extensions/mailbox_cache_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/exceptions/spam_report_exception.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/exceptions/spam_report_exception.dart';
class MailboxCacheManager { class MailboxCacheManager {
@@ -42,12 +41,13 @@ class MailboxCacheManager {
final createdCacheMailboxes = created?.toMapCache(accountId) ?? {}; final createdCacheMailboxes = created?.toMapCache(accountId) ?? {};
await _mailboxCacheClient.insertMultipleItem(createdCacheMailboxes); await _mailboxCacheClient.insertMultipleItem(createdCacheMailboxes);
} }
return Future.value();
} }
Future<Mailbox> getSpamMailbox() async { Future<Mailbox> getSpamMailbox(AccountId accountId) async {
final mailboxCachedList = await _mailboxCacheClient.getAll(); final mailboxCachedList = await _mailboxCacheClient.getListByCollectionId(accountId.asString);
final listSpamMailboxCached = mailboxCachedList final listSpamMailboxCached = mailboxCachedList
.map((mailboxCached) => mailboxCached.toMailbox()) .toMailboxList()
.where((mailbox) => mailbox.role == PresentationMailbox.roleSpam) .where((mailbox) => mailbox.role == PresentationMailbox.roleSpam)
.toList(); .toList();
@@ -28,5 +28,5 @@ abstract class SpamReportDataSource {
Future<void> deleteSpamReportState(); Future<void> deleteSpamReportState();
Future<Mailbox> getSpamMailboxCached(); Future<Mailbox> getSpamMailboxCached(AccountId accountId);
} }
@@ -70,7 +70,7 @@ class SharePreferenceSpamReportDataSourceImpl extends SpamReportDataSource {
} }
@override @override
Future<Mailbox> getSpamMailboxCached() { Future<Mailbox> getSpamMailboxCached(AccountId accountId) {
throw UnimplementedError(); throw UnimplementedError();
} }
} }
@@ -37,9 +37,9 @@ class SpamReportCacheDataSourceImpl extends SpamReportDataSource {
} }
@override @override
Future<Mailbox> getSpamMailboxCached() { Future<Mailbox> getSpamMailboxCached(AccountId accountId) {
return Future.sync(() async { return Future.sync(() async {
return await _mailboxCacheManager.getSpamMailbox(); return await _mailboxCacheManager.getSpamMailbox(accountId);
}).catchError(_exceptionThrower.throwException); }).catchError(_exceptionThrower.throwException);
} }
@@ -66,7 +66,7 @@ class SpamReportDataSourceImpl extends SpamReportDataSource {
} }
@override @override
Future<Mailbox> getSpamMailboxCached() { Future<Mailbox> getSpamMailboxCached(AccountId accountId) {
throw UnimplementedError(); throw UnimplementedError();
} }
} }
@@ -62,7 +62,7 @@ class SharePreferenceSpamReportDataSource extends SpamReportDataSource {
} }
@override @override
Future<Mailbox> getSpamMailboxCached() { Future<Mailbox> getSpamMailboxCached(AccountId accountId) {
throw UnimplementedError(); throw UnimplementedError();
} }
} }
@@ -61,7 +61,7 @@ class SpamReportRepositoryImpl extends SpamReportRepository {
} }
@override @override
Future<Mailbox> getSpamMailboxCached() { Future<Mailbox> getSpamMailboxCached(AccountId accountId) {
return mapDataSource[DataSourceType.cache]!.getSpamMailboxCached(); return mapDataSource[DataSourceType.cache]!.getSpamMailboxCached(accountId);
} }
} }
@@ -28,5 +28,5 @@ abstract class SpamReportRepository {
Future<void> deleteSpamReportState(); Future<void> deleteSpamReportState();
Future<Mailbox> getSpamMailboxCached(); Future<Mailbox> getSpamMailboxCached(AccountId accountId);
} }
@@ -2,6 +2,7 @@
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart'; import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/spam_report_repository.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/spam_report_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_number_of_unread_spam_emails_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_number_of_unread_spam_emails_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_spam_mailbox_cached_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_spam_mailbox_cached_state.dart';
@@ -12,7 +13,7 @@ class GetSpamMailboxCachedInteractor {
GetSpamMailboxCachedInteractor(this._spamReportRepository); GetSpamMailboxCachedInteractor(this._spamReportRepository);
Stream<Either<Failure, Success>> execute() async* { Stream<Either<Failure, Success>> execute(AccountId accountId) async* {
try { try {
yield Right<Failure, Success>(GetSpamMailboxCachedLoading()); yield Right<Failure, Success>(GetSpamMailboxCachedLoading());
@@ -21,7 +22,7 @@ class GetSpamMailboxCachedInteractor {
final checkTimeCondition = timeLast.inHours > MailboxDashboardConstant.spamReportBannerDisplayTimeOut; final checkTimeCondition = timeLast.inHours > MailboxDashboardConstant.spamReportBannerDisplayTimeOut;
if (checkTimeCondition) { if (checkTimeCondition) {
final spamMailbox = await _spamReportRepository.getSpamMailboxCached(); final spamMailbox = await _spamReportRepository.getSpamMailboxCached(accountId);
final countUnreadSpamMailbox = spamMailbox.unreadEmails?.value.value.toInt() ?? 0; final countUnreadSpamMailbox = spamMailbox.unreadEmails?.value.value.toInt() ?? 0;
if (countUnreadSpamMailbox > 0) { if (countUnreadSpamMailbox > 0) {
yield Right<Failure, Success>(GetSpamMailboxCachedSuccess(spamMailbox)); yield Right<Failure, Success>(GetSpamMailboxCachedSuccess(spamMailbox));
@@ -1579,8 +1579,8 @@ class MailboxDashBoardController extends ReloadableController {
} }
void refreshSpamReportBanner() { void refreshSpamReportBanner() {
if (spamReportController.enableSpamReport) { if (spamReportController.enableSpamReport && accountId.value != null) {
spamReportController.getSpamMailboxCached(); spamReportController.getSpamMailboxCached(accountId.value!);
} }
} }
@@ -92,8 +92,8 @@ class SpamReportController extends BaseController {
mailboxFilterCondition: MailboxFilterCondition(role: Role('Spam')))); mailboxFilterCondition: MailboxFilterCondition(role: Role('Spam'))));
} }
void getSpamMailboxCached() { void getSpamMailboxCached(AccountId accountId) {
consumeState(_getSpamMailboxCachedInteractor.execute()); consumeState(_getSpamMailboxCachedInteractor.execute(accountId));
} }
void _storeLastTimeDismissedSpamReportedAction() { void _storeLastTimeDismissedSpamReportedAction() {