From 6fef6190e023e96f83bc2d01402c50663ed2337e Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 11 Jun 2025 12:59:13 +0700 Subject: [PATCH] TF-3767 Clean up recent searches whenever re-login and exceeds limit Signed-off-by: dab246 --- .../local/recent_search_cache_manager.dart | 34 ++++++++---- .../model/recent_search_cleanup_rule.dart | 10 +++- .../cleanup_recent_search_cache_state.dart | 2 + ...leanup_recent_search_cache_interactor.dart | 11 ++-- .../presentation/cleanup_bindings.dart | 53 +++++++++++++++++++ .../home/presentation/home_bindings.dart | 39 +++----------- .../home/presentation/home_controller.dart | 5 -- .../data/model/recent_search_cache.dart | 5 +- .../list_recent_search_extension.dart | 5 +- .../bindings/mailbox_dashboard_bindings.dart | 2 + .../mailbox_dashboard_controller.dart | 2 + .../cleanup_recent_search_extension.dart | 24 +++++++++ .../presentation/home_controller_test.dart | 5 -- 13 files changed, 136 insertions(+), 61 deletions(-) create mode 100644 lib/features/cleanup/presentation/cleanup_bindings.dart create mode 100644 lib/features/mailbox_dashboard/presentation/extensions/cleanup_recent_search_extension.dart diff --git a/lib/features/cleanup/data/local/recent_search_cache_manager.dart b/lib/features/cleanup/data/local/recent_search_cache_manager.dart index 17cda7de0..7ed57745a 100644 --- a/lib/features/cleanup/data/local/recent_search_cache_manager.dart +++ b/lib/features/cleanup/data/local/recent_search_cache_manager.dart @@ -1,4 +1,5 @@ +import 'package:core/utils/app_logger.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/user_name.dart'; import 'package:model/extensions/account_id_extensions.dart'; @@ -18,16 +19,27 @@ class RecentSearchCacheManager { RecentSearchCacheManager(this._recentSearchCacheClient); Future clean(RecentSearchCleanupRule cleanupRule) async { - final listRecentSearchCache = await _recentSearchCacheClient.getAll(); - listRecentSearchCache.sortByCreationDate(); + final nestedKey = TupleKey( + cleanupRule.accountId.asString, + cleanupRule.userName.value, + ).encodeKey; - if (listRecentSearchCache.length > cleanupRule.storageLimit) { - final newListKeyRecent = listRecentSearchCache - .sublist(cleanupRule.storageLimit) - .map((recent) => recent.value) - .toList(); - await _recentSearchCacheClient.deleteMultipleItem(newListKeyRecent); - } + final listRecentSearchCache = await _recentSearchCacheClient + .getListByNestedKey(nestedKey); + + listRecentSearchCache.sortByCreationDate(); + + if (listRecentSearchCache.length > cleanupRule.storageLimit) { + final newListKeyRecent = listRecentSearchCache + .sublist(cleanupRule.storageLimit) + .map((recent) => recent.toRecentSearch().generateTupleKey( + cleanupRule.accountId, + cleanupRule.userName, + )) + .toList(); + log('RecentSearchCacheManager::clean: list recent to delete $newListKeyRecent'); + await _recentSearchCacheClient.deleteMultipleItem(newListKeyRecent); + } } Future saveRecentSearch( @@ -76,6 +88,10 @@ class RecentSearchCacheManager { ? listRecentSearch.sublist(0, newLimit) : listRecentSearch; + for (var recentSearch in newListRecentSearch) { + log('RecentSearchCacheManager::getAllLatest: Recent search: ${recentSearch.toString()}'); + } + return newListRecentSearch; } diff --git a/lib/features/cleanup/domain/model/recent_search_cleanup_rule.dart b/lib/features/cleanup/domain/model/recent_search_cleanup_rule.dart index 955faee33..8f9344cf9 100644 --- a/lib/features/cleanup/domain/model/recent_search_cleanup_rule.dart +++ b/lib/features/cleanup/domain/model/recent_search_cleanup_rule.dart @@ -1,13 +1,19 @@ +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/user_name.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/cleanup_rule.dart'; class RecentSearchCleanupRule extends CleanupRule { final int storageLimit; + final AccountId accountId; + final UserName userName; RecentSearchCleanupRule( - {this.storageLimit = 10} + this.accountId, + this.userName, + {this.storageLimit = 10} ) : super(); @override - List get props => [storageLimit]; + List get props => [accountId, userName, storageLimit]; } \ No newline at end of file diff --git a/lib/features/cleanup/domain/state/cleanup_recent_search_cache_state.dart b/lib/features/cleanup/domain/state/cleanup_recent_search_cache_state.dart index 19ee7a266..6f1256286 100644 --- a/lib/features/cleanup/domain/state/cleanup_recent_search_cache_state.dart +++ b/lib/features/cleanup/domain/state/cleanup_recent_search_cache_state.dart @@ -1,6 +1,8 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; +class CleanupRecentSearchCacheLoading extends LoadingState {} + class CleanupRecentSearchCacheSuccess extends UIState {} class CleanupRecentSearchCacheFailure extends FeatureFailure { diff --git a/lib/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart b/lib/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart index 769c926e9..ece6fe438 100644 --- a/lib/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart +++ b/lib/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart @@ -1,4 +1,5 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/recent_search_cleanup_rule.dart'; import 'package:tmail_ui_user/features/cleanup/domain/repository/cleanup_repository.dart'; @@ -9,13 +10,13 @@ class CleanupRecentSearchCacheInteractor { CleanupRecentSearchCacheInteractor(this.cleanupRepository); - Future> execute(RecentSearchCleanupRule cleanupRule) async { + Stream> execute(RecentSearchCleanupRule cleanupRule) async* { try { + yield Right(CleanupRecentSearchCacheLoading()); await cleanupRepository.cleanRecentSearchCache(cleanupRule); - log('CleanupRecentSearchCacheInteractor::execute(): SUCCESS'); - return Right(CleanupRecentSearchCacheSuccess()); + yield Right(CleanupRecentSearchCacheSuccess()); } catch (e) { - return Left(CleanupRecentSearchCacheFailure(e)); + yield Left(CleanupRecentSearchCacheFailure(e)); } } } \ No newline at end of file diff --git a/lib/features/cleanup/presentation/cleanup_bindings.dart b/lib/features/cleanup/presentation/cleanup_bindings.dart new file mode 100644 index 000000000..36cb2ce4d --- /dev/null +++ b/lib/features/cleanup/presentation/cleanup_bindings.dart @@ -0,0 +1,53 @@ + +import 'package:get/get.dart'; +import 'package:tmail_ui_user/features/base/interactors_bindings.dart'; +import 'package:tmail_ui_user/features/cleanup/data/datasource/cleanup_datasource.dart'; +import 'package:tmail_ui_user/features/cleanup/data/datasource_impl/cleanup_datasource_impl.dart'; +import 'package:tmail_ui_user/features/cleanup/data/local/recent_login_url_cache_manager.dart'; +import 'package:tmail_ui_user/features/cleanup/data/local/recent_login_username_cache_manager.dart'; +import 'package:tmail_ui_user/features/cleanup/data/local/recent_search_cache_manager.dart'; +import 'package:tmail_ui_user/features/cleanup/data/repository/cleanup_repository_impl.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/repository/cleanup_repository.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_url_cache_interactor.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_username_interactor.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart'; +import 'package:tmail_ui_user/features/thread/data/local/email_cache_manager.dart'; +import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart'; + +class CleanupBindings extends InteractorsBindings { + + @override + void bindingsDataSource() { + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsDataSourceImpl() { + Get.lazyPut(() => CleanupDataSourceImpl( + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + )); + } + + @override + void bindingsInteractor() { + Get.lazyPut(() => CleanupEmailCacheInteractor(Get.find())); + Get.lazyPut(() => CleanupRecentSearchCacheInteractor(Get.find())); + Get.lazyPut(() => CleanupRecentLoginUrlCacheInteractor(Get.find())); + Get.lazyPut(() => CleanupRecentLoginUsernameCacheInteractor(Get.find())); + } + + @override + void bindingsRepository() { + Get.lazyPut(() => Get.find()); + } + + @override + void bindingsRepositoryImpl() { + Get.lazyPut(() => CleanupRepositoryImpl(Get.find())); + } +} \ No newline at end of file diff --git a/lib/features/home/presentation/home_bindings.dart b/lib/features/home/presentation/home_bindings.dart index 2e75157d2..62ed90c0c 100644 --- a/lib/features/home/presentation/home_bindings.dart +++ b/lib/features/home/presentation/home_bindings.dart @@ -1,21 +1,12 @@ import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; -import 'package:tmail_ui_user/features/cleanup/data/datasource/cleanup_datasource.dart'; -import 'package:tmail_ui_user/features/cleanup/data/datasource_impl/cleanup_datasource_impl.dart'; -import 'package:tmail_ui_user/features/cleanup/data/local/recent_login_url_cache_manager.dart'; -import 'package:tmail_ui_user/features/cleanup/data/local/recent_login_username_cache_manager.dart'; -import 'package:tmail_ui_user/features/cleanup/data/local/recent_search_cache_manager.dart'; -import 'package:tmail_ui_user/features/cleanup/data/repository/cleanup_repository_impl.dart'; -import 'package:tmail_ui_user/features/cleanup/domain/repository/cleanup_repository.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_url_cache_interactor.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_username_interactor.dart'; -import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart'; +import 'package:tmail_ui_user/features/cleanup/presentation/cleanup_bindings.dart'; import 'package:tmail_ui_user/features/home/presentation/home_controller.dart'; import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/check_oidc_is_available_interactor.dart'; -import 'package:tmail_ui_user/features/thread/data/local/email_cache_manager.dart'; -import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart'; import 'package:tmail_ui_user/main/utils/email_receive_manager.dart'; class HomeBindings extends BaseBindings { @@ -25,44 +16,26 @@ class HomeBindings extends BaseBindings { Get.lazyPut(() => HomeController( Get.find(), Get.find(), - Get.find(), Get.find(), Get.find(), )); } @override - void bindingsDataSource() { - Get.lazyPut(() => Get.find()); - } + void bindingsDataSource() {} @override - void bindingsDataSourceImpl() { - Get.lazyPut(() => CleanupDataSourceImpl( - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - )); - } + void bindingsDataSourceImpl() {} @override void bindingsInteractor() { - Get.lazyPut(() => CleanupEmailCacheInteractor(Get.find())); - Get.lazyPut(() => CleanupRecentSearchCacheInteractor(Get.find())); - Get.lazyPut(() => CleanupRecentLoginUrlCacheInteractor(Get.find())); - Get.lazyPut(() => CleanupRecentLoginUsernameCacheInteractor(Get.find())); + CleanupBindings().dependencies(); Get.lazyPut(() => CheckOIDCIsAvailableInteractor(Get.find())); } @override - void bindingsRepository() { - Get.lazyPut(() => Get.find()); - } + void bindingsRepository() {} @override - void bindingsRepositoryImpl() { - Get.lazyPut(() => CleanupRepositoryImpl(Get.find())); - } + void bindingsRepositoryImpl() {} } \ No newline at end of file diff --git a/lib/features/home/presentation/home_controller.dart b/lib/features/home/presentation/home_controller.dart index 1f02396fd..721125c1f 100644 --- a/lib/features/home/presentation/home_controller.dart +++ b/lib/features/home/presentation/home_controller.dart @@ -15,11 +15,9 @@ import 'package:tmail_ui_user/features/cleanup/domain/model/cleanup_rule.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/email_cleanup_rule.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/recent_login_url_cleanup_rule.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/recent_login_username_cleanup_rule.dart'; -import 'package:tmail_ui_user/features/cleanup/domain/model/recent_search_cleanup_rule.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_url_cache_interactor.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_username_interactor.dart'; -import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart'; import 'package:tmail_ui_user/features/home/domain/state/auto_sign_in_via_deep_link_state.dart'; import 'package:tmail_ui_user/features/home/domain/state/get_session_state.dart'; import 'package:tmail_ui_user/features/login/domain/exceptions/logout_exception.dart'; @@ -39,7 +37,6 @@ import 'package:tmail_ui_user/main/utils/ios_notification_manager.dart'; class HomeController extends ReloadableController { final CleanupEmailCacheInteractor _cleanupEmailCacheInteractor; final EmailReceiveManager _emailReceiveManager; - final CleanupRecentSearchCacheInteractor _cleanupRecentSearchCacheInteractor; final CleanupRecentLoginUrlCacheInteractor _cleanupRecentLoginUrlCacheInteractor; final CleanupRecentLoginUsernameCacheInteractor _cleanupRecentLoginUsernameCacheInteractor; @@ -49,7 +46,6 @@ class HomeController extends ReloadableController { HomeController( this._cleanupEmailCacheInteractor, this._emailReceiveManager, - this._cleanupRecentSearchCacheInteractor, this._cleanupRecentLoginUrlCacheInteractor, this._cleanupRecentLoginUsernameCacheInteractor, ); @@ -107,7 +103,6 @@ class HomeController extends ReloadableController { await Future.wait([ _cleanupEmailCacheInteractor.execute(EmailCleanupRule(Duration.defaultCacheInternal)), - _cleanupRecentSearchCacheInteractor.execute(RecentSearchCleanupRule()), _cleanupRecentLoginUrlCacheInteractor.execute(RecentLoginUrlCleanupRule()), _cleanupRecentLoginUsernameCacheInteractor.execute(RecentLoginUsernameCleanupRule()), ], eagerError: true).then((_) => getAuthenticatedAccountAction()); diff --git a/lib/features/mailbox_dashboard/data/model/recent_search_cache.dart b/lib/features/mailbox_dashboard/data/model/recent_search_cache.dart index db99131af..b183b997f 100644 --- a/lib/features/mailbox_dashboard/data/model/recent_search_cache.dart +++ b/lib/features/mailbox_dashboard/data/model/recent_search_cache.dart @@ -42,7 +42,10 @@ extension ListRecentSearchCacheExtension on List { void sortByCreationDate() { sort((recentSearch1, recentSearch2) { - return recentSearch1.creationDate.compareToSort(recentSearch1.creationDate, false); + return recentSearch1.creationDate.compareToSort( + recentSearch2.creationDate, + false, + ); }); } } \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/extensions/list_recent_search_extension.dart b/lib/features/mailbox_dashboard/domain/extensions/list_recent_search_extension.dart index 22a3d204f..d97936d13 100644 --- a/lib/features/mailbox_dashboard/domain/extensions/list_recent_search_extension.dart +++ b/lib/features/mailbox_dashboard/domain/extensions/list_recent_search_extension.dart @@ -6,7 +6,10 @@ extension ListRecentSearchExtension on List { void sortByCreationDate() { sort((recentSearch1, recentSearch2) { - return recentSearch1.creationDate.compareToSort(recentSearch1.creationDate, false); + return recentSearch1.creationDate.compareToSort( + recentSearch2.creationDate, + false, + ); }); } } \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart index 37fd0cfec..f336d7256 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/caching/utils/local_storage_manager.dart'; import 'package:tmail_ui_user/features/caching/utils/session_storage_manager.dart'; import 'package:tmail_ui_user/features/cleanup/data/local/recent_search_cache_manager.dart'; +import 'package:tmail_ui_user/features/cleanup/presentation/cleanup_bindings.dart'; import 'package:tmail_ui_user/features/composer/data/repository/contact_repository_impl.dart'; import 'package:tmail_ui_user/features/composer/domain/repository/contact_repository.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart'; @@ -144,6 +145,7 @@ class MailboxDashBoardBindings extends BaseBindings { @override void dependencies() { + CleanupBindings().dependencies(); super.dependencies(); SendingQueueBindings().dependencies(); MailboxBindings().dependencies(); diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 569dd4088..4c21644a0 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -102,6 +102,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/download/download_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart' as search; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/cleanup_recent_search_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/delete_emails_in_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_clear_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_create_filter_for_folder.dart'; @@ -781,6 +782,7 @@ class MailboxDashBoardController extends ReloadableController spamReportController.getSpamReportStateAction(); _getAllIdentities(); getServerSetting(); + cleanupRecentSearch(); if (PlatformInfo.isMobile) { getAllSendingEmails(); diff --git a/lib/features/mailbox_dashboard/presentation/extensions/cleanup_recent_search_extension.dart b/lib/features/mailbox_dashboard/presentation/extensions/cleanup_recent_search_extension.dart new file mode 100644 index 000000000..e394eba48 --- /dev/null +++ b/lib/features/mailbox_dashboard/presentation/extensions/cleanup_recent_search_extension.dart @@ -0,0 +1,24 @@ + +import 'package:core/utils/app_logger.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/model/recent_search_cleanup_rule.dart'; +import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; +import 'package:tmail_ui_user/main/routes/route_navigation.dart'; + +extension CleanupRecentSearchExtension on MailboxDashBoardController { + void cleanupRecentSearch() { + final cleanupRecentSearchCacheInteractor = + getBinding(); + final accountId = this.accountId.value; + final username = sessionCurrent?.username; + + if (accountId == null || username == null || cleanupRecentSearchCacheInteractor == null) { + logError('CleanupRecentSearchExtension::cleanupRecentSearch: accountId == null || username == null || cleanupRecentSearchCacheInteractor == null'); + return; + } + + consumeState(cleanupRecentSearchCacheInteractor.execute( + RecentSearchCleanupRule(accountId, username), + )); + } +} \ No newline at end of file diff --git a/test/features/home/presentation/home_controller_test.dart b/test/features/home/presentation/home_controller_test.dart index 874cd284d..db1a83668 100644 --- a/test/features/home/presentation/home_controller_test.dart +++ b/test/features/home/presentation/home_controller_test.dart @@ -15,7 +15,6 @@ import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_url_cache_interactor.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_login_username_interactor.dart'; -import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart'; import 'package:tmail_ui_user/features/home/domain/usecases/get_session_interactor.dart'; import 'package:tmail_ui_user/features/home/presentation/home_controller.dart'; import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart'; @@ -45,7 +44,6 @@ import 'home_controller_test.mocks.dart'; MockSpec(), MockSpec(), MockSpec(), - MockSpec(), MockSpec(), MockSpec(), MockSpec(), @@ -64,7 +62,6 @@ void main() { late HomeController homeController; late MockCleanupEmailCacheInteractor cleanupEmailCacheInteractor; late MockEmailReceiveManager emailReceiveManager; - late MockCleanupRecentSearchCacheInteractor cleanupRecentSearchCacheInteractor; late MockCleanupRecentLoginUrlCacheInteractor cleanupRecentLoginUrlCacheInteractor; late MockCleanupRecentLoginUsernameCacheInteractor cleanupRecentLoginUsernameCacheInteractor; @@ -90,7 +87,6 @@ void main() { setUpAll(() { cleanupEmailCacheInteractor = MockCleanupEmailCacheInteractor(); emailReceiveManager = MockEmailReceiveManager(); - cleanupRecentSearchCacheInteractor = MockCleanupRecentSearchCacheInteractor(); cleanupRecentLoginUrlCacheInteractor = MockCleanupRecentLoginUrlCacheInteractor(); cleanupRecentLoginUsernameCacheInteractor = MockCleanupRecentLoginUsernameCacheInteractor(); @@ -142,7 +138,6 @@ void main() { homeController = HomeController( cleanupEmailCacheInteractor, emailReceiveManager, - cleanupRecentSearchCacheInteractor, cleanupRecentLoginUrlCacheInteractor, cleanupRecentLoginUsernameCacheInteractor );