TF-3050 Fix synchronize button should refresh all mailbox and emails

This commit is contained in:
dab246
2024-07-26 09:37:49 +07:00
committed by Dat H. Pham
parent e5e4a6896d
commit 764ba95927
10 changed files with 111 additions and 62 deletions
@@ -59,6 +59,7 @@ import 'package:tmail_ui_user/features/thread/domain/state/load_more_emails_stat
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_star_multiple_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/refresh_all_email_state.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/state/search_more_email_state.dart';
@@ -203,7 +204,7 @@ class ThreadController extends BaseController with EmailActionController {
void handleFailureViewState(Failure failure) {
super.handleFailureViewState(failure);
if (failure is SearchEmailFailure) {
mailboxDashBoardController.refreshingMailboxState.value = Left(failure);
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
canSearchMore = false;
mailboxDashBoardController.emailsInCurrentMailbox.clear();
} else if (failure is SearchMoreEmailFailure) {
@@ -216,7 +217,7 @@ class ThreadController extends BaseController with EmailActionController {
openingEmail.value = false;
popAndPush(AppRoutes.unknownRoutePage);
} else if (failure is GetAllEmailFailure) {
mailboxDashBoardController.refreshingMailboxState.value = Left(failure);
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
canLoadMore = true;
}
}
@@ -279,10 +280,7 @@ class ThreadController extends BaseController with EmailActionController {
});
ever(mailboxDashBoardController.dashBoardAction, (action) {
if (action is RefreshAllEmailAction) {
refreshAllEmail();
mailboxDashBoardController.clearDashBoardAction();
} else if (action is SelectionAllEmailAction) {
if (action is SelectionAllEmailAction) {
setSelectAllEmailAction();
mailboxDashBoardController.clearDashBoardAction();
} else if (action is CancelSelectionAllEmailAction) {
@@ -343,6 +341,9 @@ class ThreadController extends BaseController with EmailActionController {
_refreshEmailChanges();
}
mailboxDashBoardController.clearEmailUIAction();
} else if (action is RefreshAllEmailAction) {
refreshAllEmail();
mailboxDashBoardController.clearEmailUIAction();
}
});
@@ -448,12 +449,12 @@ class ThreadController extends BaseController with EmailActionController {
}
void _getAllEmailSuccess(GetAllEmailSuccess success) {
mailboxDashBoardController.updateRefreshAllEmailState(Right(RefreshAllEmailSuccess()));
if (success.currentMailboxId != selectedMailboxId) {
log('ThreadController::_getAllEmailSuccess: GetAllForMailboxId = ${success.currentMailboxId?.asString} | SELECTED_MAILBOX_ID = ${selectedMailboxId?.asString} | SELECTED_MAILBOX_NAME = ${selectedMailbox?.name?.name}');
return;
}
mailboxDashBoardController.refreshingMailboxState.value = Right(success);
_currentEmailState = success.currentEmailState;
log('ThreadController::_getAllEmailSuccess():COUNT = ${success.emailList.length} | EMAIL_STATE = $_currentEmailState');
final newListEmail = success.emailList.syncPresentationEmail(
@@ -863,7 +864,7 @@ class ThreadController extends BaseController with EmailActionController {
}
void _searchEmailsSuccess(SearchEmailSuccess success) {
mailboxDashBoardController.refreshingMailboxState.value = Right(success);
mailboxDashBoardController.updateRefreshAllEmailState(Right(RefreshAllEmailSuccess()));
log('ThreadController::_searchEmailsSuccess: COUNT = ${success.emailList.length}');
final resultEmailSearchList = success.emailList
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))