TF-3002 [MOBILE] Fix no result screen still show during search is in progress

This commit is contained in:
dab246
2024-10-03 14:47:18 +07:00
committed by Dat H. Pham
parent 37dd5ecf45
commit 63e6a8ab00
4 changed files with 103 additions and 35 deletions
@@ -107,6 +107,7 @@ class SearchEmailController extends BaseController
final selectionMode = Rx<SelectMode>(SelectMode.INACTIVE);
final emailSortOrderType = EmailSortOrderType.mostRecent.obs;
final suggestionSearchViewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
final resultSearchViewState = Rx<Either<Failure, Success>>(Right(UIState.idle));
late Debouncer<String> _deBouncerTime;
late Worker dashBoardViewStateWorker;
@@ -175,6 +176,8 @@ class SearchEmailController extends BaseController
_searchMoreEmailsSuccess(success);
} else if (success is RefreshChangesSearchEmailSuccess) {
_refreshChangesSearchEmailsSuccess(success);
} else if (success is SearchingState) {
resultSearchViewState.value = Right(success);
}
}
@@ -188,6 +191,22 @@ class SearchEmailController extends BaseController
}
}
@override
void handleUrgentExceptionOnMobile({Failure? failure, Exception? exception}) {
super.handleUrgentExceptionOnMobile(failure: failure, exception: exception);
if (failure is SearchEmailFailure) {
_searchEmailsFailure(failure);
}
}
@override
void handleUrgentExceptionOnWeb({Failure? failure, Exception? exception}) {
super.handleUrgentExceptionOnWeb(failure: failure, exception: exception);
if (failure is SearchEmailFailure) {
_searchEmailsFailure(failure);
}
}
void _initializeDebounceTimeTextSearchChange() {
_deBouncerTime = Debouncer<String>(
const Duration(milliseconds: 500),
@@ -345,6 +364,7 @@ class SearchEmailController extends BaseController
textInputSearchFocus.unfocus();
if (session != null && accountId != null) {
resultSearchViewState.value = Right(SearchingState());
canSearchMore = true;
searchIsRunning.value = true;
cancelSelectionMode();
@@ -400,6 +420,8 @@ class SearchEmailController extends BaseController
isSearchEmailRunning: true
);
resultSearchViewState.value = Right(success);
if (resultSearchScrollController.hasClients) {
resultSearchScrollController.animateTo(
0,
@@ -410,6 +432,7 @@ class SearchEmailController extends BaseController
void _searchEmailsFailure(SearchEmailFailure failure) {
listResultSearch.clear();
resultSearchViewState.value = Left(failure);
}
void searchMoreEmailsAction() {