From c63e3d2973bf011b11d2b5fdcfc6387187189b59 Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Thu, 26 Dec 2024 15:00:55 +0700 Subject: [PATCH] TF-3334 Synchonize cache all the time have new changes even in search or not --- .../thread/presentation/thread_controller.dart | 12 +++++++++--- .../controller/thread_controller_test.dart | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index c279b8982..9b8781581 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -557,6 +557,8 @@ class ThreadController extends BaseController with EmailActionController { } Future _refreshChangeSearchEmail() async { + await _refreshChangeListEmailCache(); + log('ThreadController::_refreshChangeSearchEmail:'); canSearchMore = false; searchController.updateFilterEmail( @@ -596,9 +598,8 @@ class ThreadController extends BaseController with EmailActionController { } } - Future _refreshChangeListEmail() async { - log('ThreadController::_refreshChangeListEmail:'); - final refreshViewState = await _refreshChangesEmailsInMailboxInteractor.execute( + Future> _refreshChangeListEmailCache() async { + return _refreshChangesEmailsInMailboxInteractor.execute( _session!, _accountId!, mailboxDashBoardController.currentEmailState!, @@ -614,6 +615,11 @@ class ThreadController extends BaseController with EmailActionController { mailboxId: selectedMailboxId, ), ).last; + } + + Future _refreshChangeListEmail() async { + log('ThreadController::_refreshChangeListEmail:'); + final refreshViewState = await _refreshChangeListEmailCache(); final refreshState = refreshViewState .foldSuccessWithResult(); diff --git a/test/features/thread/presentation/controller/thread_controller_test.dart b/test/features/thread/presentation/controller/thread_controller_test.dart index 571219a5f..acc30367d 100644 --- a/test/features/thread/presentation/controller/thread_controller_test.dart +++ b/test/features/thread/presentation/controller/thread_controller_test.dart @@ -35,6 +35,7 @@ import 'package:tmail_ui_user/features/network_connection/presentation/network_c import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart'; import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; +import 'package:tmail_ui_user/features/thread/domain/state/refresh_changes_all_email_state.dart'; import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart'; import 'package:tmail_ui_user/features/thread/domain/usecases/get_email_by_id_interactor.dart'; import 'package:tmail_ui_user/features/thread/domain/usecases/get_emails_in_mailbox_interactor.dart'; @@ -302,6 +303,19 @@ void main() { properties: anyNamed('properties'), needRefreshSearchState: anyNamed('needRefreshSearchState'), )).thenAnswer((_) => Stream.value(Right(SearchEmailSuccess(emailList)))); + + when(mockRefreshChangesEmailsInMailboxInteractor.execute( + any, + any, + any, + sort: anyNamed('sort'), + propertiesCreated: anyNamed('propertiesCreated'), + propertiesUpdated: anyNamed('propertiesUpdated'), + emailFilter: anyNamed('emailFilter'), + )).thenAnswer((_) => Stream.value(Right(RefreshChangesAllEmailSuccess( + emailList: emailList, + currentEmailState: State('old-state')))) + ); // Act threadController.onInit();