TF-3226 Apply minInputLength on autocomplete capability to app
This commit is contained in:
@@ -98,7 +98,6 @@ class AdvancedFilterController extends BaseController {
|
||||
_memorySearchFilter = searchFilter;
|
||||
}
|
||||
|
||||
@visibleForTesting
|
||||
MailboxDashBoardController get mailboxDashBoardController => _mailboxDashBoardController;
|
||||
|
||||
void _updateMemorySearchFilter({
|
||||
|
||||
+14
@@ -160,6 +160,7 @@ import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
import 'package:tmail_ui_user/main/universal_import/html_stub.dart' as html;
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
||||
import 'package:tmail_ui_user/main/utils/ios_notification_manager.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
@@ -2556,6 +2557,10 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
||||
return <EmailAddress>[];
|
||||
}
|
||||
|
||||
if (query.length < minInputLengthAutocomplete) {
|
||||
return <EmailAddress>[];
|
||||
}
|
||||
|
||||
final listEmailAddress = await _getAutoCompleteInteractor!
|
||||
.execute(AutoCompletePattern(word: query, accountId: accountId.value!, limit: 2))
|
||||
.then((value) => value.fold(
|
||||
@@ -2908,6 +2913,15 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
||||
dispatchAction(ClearSearchFilterAppliedAction());
|
||||
}
|
||||
|
||||
int get minInputLengthAutocomplete {
|
||||
if (sessionCurrent == null || accountId.value == null) {
|
||||
return AppConfig.defaultMinInputLengthAutocomplete;
|
||||
}
|
||||
return getMinInputLengthAutocomplete(
|
||||
session: sessionCurrent!,
|
||||
accountId: accountId.value!);
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
|
||||
+6
@@ -31,6 +31,9 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
||||
field: AdvancedSearchFilterField.from,
|
||||
listEmailAddress: controller.listFromEmailAddress,
|
||||
expandMode: controller.fromAddressExpandMode.value,
|
||||
minInputLengthAutocomplete: controller
|
||||
.mailboxDashBoardController
|
||||
.minInputLengthAutocomplete,
|
||||
controller: controller.fromEmailAddressController,
|
||||
focusNode: controller.focusManager.fromFieldFocusNode,
|
||||
nextFocusNode: controller.focusManager.toFieldFocusNode,
|
||||
@@ -45,6 +48,9 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
||||
field: AdvancedSearchFilterField.to,
|
||||
listEmailAddress: controller.listToEmailAddress,
|
||||
expandMode: controller.toAddressExpandMode.value,
|
||||
minInputLengthAutocomplete: controller
|
||||
.mailboxDashBoardController
|
||||
.minInputLengthAutocomplete,
|
||||
controller: controller.toEmailAddressController,
|
||||
focusNode: controller.focusManager.toFieldFocusNode,
|
||||
nextFocusNode: controller.focusManager.subjectFieldFocusNode,
|
||||
|
||||
+3
-1
@@ -45,12 +45,14 @@ class TextFieldAutocompleteEmailAddressWeb extends StatefulWidget {
|
||||
final OnRemoveDraggableEmailAddressAction? onRemoveDraggableEmailAddressAction;
|
||||
final TextEditingController? controller;
|
||||
final VoidCallback? onSearchAction;
|
||||
final int minInputLengthAutocomplete;
|
||||
|
||||
const TextFieldAutocompleteEmailAddressWeb({
|
||||
Key? key,
|
||||
required this.field,
|
||||
required this.listEmailAddress,
|
||||
this.expandMode = ExpandMode.EXPAND,
|
||||
this.minInputLengthAutocomplete = AppConfig.defaultMinInputLengthAutocomplete,
|
||||
this.focusNode,
|
||||
this.keyTagEditor,
|
||||
this.nextFocusNode,
|
||||
@@ -242,7 +244,7 @@ class _TextFieldAutocompleteEmailAddressWebState extends State<TextFieldAutocomp
|
||||
}
|
||||
|
||||
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
||||
if (processedQuery.length >= AppConfig.limitCharToStartSearch &&
|
||||
if (processedQuery.length >= widget.minInputLengthAutocomplete &&
|
||||
widget.onSuggestionEmailAddress != null) {
|
||||
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);
|
||||
final listSuggestionEmailAddress = listEmailAddress.map((emailAddress) => _toSuggestionEmailAddress(emailAddress, _currentListEmailAddress));
|
||||
|
||||
@@ -30,7 +30,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/qu
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_filters/search_filter_button.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
|
||||
class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
final _searchController = Get.find<search.SearchController>();
|
||||
@@ -67,7 +66,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
child: QuickSearchInputForm<PresentationEmail, EmailAddress, RecentSearch>(
|
||||
maxHeight: 52,
|
||||
suggestionsBoxVerticalOffset: 0.0,
|
||||
minInputLengthAutocomplete: AppConfig.limitCharToStartSearch,
|
||||
minInputLengthAutocomplete: _dashBoardController.minInputLengthAutocomplete,
|
||||
textFieldConfiguration: _createConfiguration(context),
|
||||
suggestionsBoxDecoration: const QuickSearchSuggestionsBoxDecoration(
|
||||
color: Colors.white,
|
||||
|
||||
Reference in New Issue
Block a user