TF-3087 [MOBILE] Apply new design suggestions search for email address in search bar

This commit is contained in:
dab246
2024-08-30 14:45:30 +07:00
committed by Dat H. Pham
parent 208a6cde0d
commit 4494f7bdaf
2 changed files with 56 additions and 1 deletions
@@ -19,6 +19,7 @@ import 'package:model/email/mark_star_action.dart';
import 'package:model/email/prefix_email_address.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/email/read_actions.dart';
import 'package:model/extensions/email_address_extension.dart';
import 'package:model/extensions/list_presentation_email_extension.dart';
import 'package:model/extensions/presentation_email_extension.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
@@ -97,6 +98,7 @@ class SearchEmailController extends BaseController
final currentSearchText = RxString('');
final listRecentSearch = RxList<RecentSearch>();
final listSuggestionSearch = RxList<PresentationEmail>();
final listContactSuggestionSearch = RxList<EmailAddress>();
final simpleSearchFilter = Rx<SimpleSearchFilter>(SimpleSearchFilter());
final searchIsRunning = RxBool(false);
final emailReceiveTimeType = EmailReceiveTimeType.allTime.obs;
@@ -182,9 +184,16 @@ class SearchEmailController extends BaseController
positionOption: emailSortOrderType.value.isScrollByPosition() ? const Some(0) : const None()
);
if (value.isNotEmpty && session != null && accountId != null) {
listSuggestionSearch.value = await quickSearchEmails(session: session!, accountId: accountId!);
final tupleListSuggestion = await Future.wait([
quickSearchEmails(session: session!, accountId: accountId!),
mailboxDashBoardController.getContactSuggestion(value)
]);
listSuggestionSearch.value = tupleListSuggestion[0] as List<PresentationEmail>;
listContactSuggestionSearch.value = tupleListSuggestion[1] as List<EmailAddress>;
} else {
listSuggestionSearch.clear();
listContactSuggestionSearch.clear();
}
if (listSuggestionSearch.isEmpty && currentSearchText.isEmpty) {
listRecentSearch.value = await getAllRecentSearchAction(pattern: value);
@@ -454,6 +463,18 @@ class SearchEmailController extends BaseController
_searchEmailAction(context);
}
void searchEmailByEmailAddressAction(
BuildContext context,
EmailAddress emailAddress
) {
_updateSimpleSearchFilter(
fromOption: Some({emailAddress.emailAddress}),
beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition() ? const Some(0) : const None()
);
_searchEmailAction(context);
}
void submitSearchAction(BuildContext context, String query) {
_updateSimpleSearchFilter(
textOption: Some(SearchQuery(query)),
@@ -723,6 +744,7 @@ class SearchEmailController extends BaseController
textInputSearchController.clear();
currentSearchText.value = '';
listSuggestionSearch.clear();
listContactSuggestionSearch.clear();
}
void clearAllResultSearch() {
@@ -730,6 +752,7 @@ class SearchEmailController extends BaseController
currentSearchText.value = '';
listRecentSearch.clear();
listSuggestionSearch.clear();
listContactSuggestionSearch.clear();
listResultSearch.clear();
simpleSearchFilter.value = SimpleSearchFilter();
}