TF-1155 Automatically clear value of From/To field when disable advanced search
Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit 6f6e6970887525f3fbb9d0003eda8e1c5d41afa0)
This commit is contained in:
+25
-30
@@ -37,8 +37,6 @@ class AdvancedFilterController extends BaseController {
|
|||||||
|
|
||||||
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
|
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
|
||||||
final hasAttachment = false.obs;
|
final hasAttachment = false.obs;
|
||||||
final lastTextForm = ''.obs;
|
|
||||||
final lastTextTo = ''.obs;
|
|
||||||
final startDate = Rxn<DateTime>();
|
final startDate = Rxn<DateTime>();
|
||||||
final endDate = Rxn<DateTime>();
|
final endDate = Rxn<DateTime>();
|
||||||
|
|
||||||
@@ -90,19 +88,13 @@ class AdvancedFilterController extends BaseController {
|
|||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cleanSearchFilter(BuildContext context) {
|
void clearSearchFilter(BuildContext context) {
|
||||||
searchController.clearSearchFilter();
|
searchController.clearSearchFilter();
|
||||||
_updateDateRangeTime(EmailReceiveTimeType.allTime);
|
_resetAllToOriginalValue();
|
||||||
subjectFilterInputController.text = '';
|
_clearAllTextFieldInput();
|
||||||
hasKeyWordFilterInputController.text = '';
|
|
||||||
notKeyWordFilterInputController.text = '';
|
|
||||||
fromEmailAddressController.text = '';
|
|
||||||
toEmailAddressController.text = '';
|
|
||||||
hasAttachment.value = false;
|
|
||||||
_destinationMailboxSelected = null;
|
|
||||||
searchController.searchInputController.clear();
|
searchController.searchInputController.clear();
|
||||||
searchController.deactivateAdvancedSearch();
|
searchController.deactivateAdvancedSearch();
|
||||||
searchController.isAdvancedSearchViewOpen.toggle();
|
searchController.isAdvancedSearchViewOpen.value = false;
|
||||||
_mailboxDashBoardController.searchEmail(context);
|
_mailboxDashBoardController.searchEmail(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,17 +112,17 @@ class AdvancedFilterController extends BaseController {
|
|||||||
searchController.updateFilterEmail(notKeyword: {});
|
searchController.updateFilterEmail(notKeyword: {});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastTextForm.isNotEmpty && !searchController.searchEmailFilter.value.from.contains(lastTextForm.value)){
|
if (listFromEmailAddress.isNotEmpty) {
|
||||||
searchController.updateFilterEmail(fromOption: Some(searchController.searchEmailFilter.value.from..add(lastTextForm.value)));
|
final listAddress = listFromEmailAddress.map((emailAddress) => emailAddress.emailAddress).toSet();
|
||||||
lastTextForm.value = '';
|
searchController.updateFilterEmail(fromOption: Some(listAddress));
|
||||||
|
} else {
|
||||||
|
searchController.updateFilterEmail(fromOption: const None());
|
||||||
}
|
}
|
||||||
|
if (listToEmailAddress.isNotEmpty) {
|
||||||
if (lastTextTo.isNotEmpty && !searchController.searchEmailFilter.value.to.contains(lastTextTo.value)){
|
final listAddress = listToEmailAddress.map((emailAddress) => emailAddress.emailAddress).toSet();
|
||||||
searchController.updateFilterEmail(
|
searchController.updateFilterEmail(toOption: Some(listAddress));
|
||||||
to: searchController.searchEmailFilter.value.to..add(lastTextTo.value),
|
} else {
|
||||||
);
|
searchController.updateFilterEmail(toOption: const None());
|
||||||
|
|
||||||
lastTextTo.value = '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
searchController.updateFilterEmail(
|
searchController.updateFilterEmail(
|
||||||
@@ -181,7 +173,7 @@ class AdvancedFilterController extends BaseController {
|
|||||||
if (!isAdvancedSearchHasApplied) {
|
if (!isAdvancedSearchHasApplied) {
|
||||||
searchController.updateFilterEmail(beforeOption: const None());
|
searchController.updateFilterEmail(beforeOption: const None());
|
||||||
}
|
}
|
||||||
searchController.isAdvancedSearchViewOpen.toggle();
|
searchController.isAdvancedSearchViewOpen.value = false;
|
||||||
_mailboxDashBoardController.searchEmail(context);
|
_mailboxDashBoardController.searchEmail(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,6 +263,12 @@ class AdvancedFilterController extends BaseController {
|
|||||||
mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(searchEmailFilter.mailbox?.getDisplayName(context));
|
mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(searchEmailFilter.mailbox?.getDisplayName(context));
|
||||||
}
|
}
|
||||||
hasAttachment.value = searchEmailFilter.hasAttachment;
|
hasAttachment.value = searchEmailFilter.hasAttachment;
|
||||||
|
if (searchEmailFilter.from.isEmpty) {
|
||||||
|
listFromEmailAddress.clear();
|
||||||
|
}
|
||||||
|
if (searchEmailFilter.to.isEmpty) {
|
||||||
|
listToEmailAddress.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectDateRange(BuildContext context) {
|
void selectDateRange(BuildContext context) {
|
||||||
@@ -369,11 +367,9 @@ class AdvancedFilterController extends BaseController {
|
|||||||
switch(field) {
|
switch(field) {
|
||||||
case AdvancedSearchFilterField.from:
|
case AdvancedSearchFilterField.from:
|
||||||
listFromEmailAddress = List.from(listEmailAddress);
|
listFromEmailAddress = List.from(listEmailAddress);
|
||||||
searchEmailFilter.from.addAll(listEmailAddress.map((emailAddress) => emailAddress.emailAddress));
|
|
||||||
break;
|
break;
|
||||||
case AdvancedSearchFilterField.to:
|
case AdvancedSearchFilterField.to:
|
||||||
listToEmailAddress = List.from(listEmailAddress);
|
listToEmailAddress = List.from(listEmailAddress);
|
||||||
searchEmailFilter.to.addAll(listEmailAddress.map((emailAddress) => emailAddress.emailAddress));
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -420,12 +416,11 @@ class AdvancedFilterController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _resetAllToOriginalValue() {
|
void _resetAllToOriginalValue() {
|
||||||
dateFilterSelectedFormAdvancedSearch.value = EmailReceiveTimeType.allTime;
|
_updateDateRangeTime(EmailReceiveTimeType.allTime);
|
||||||
hasAttachment.value = false;
|
hasAttachment.value = false;
|
||||||
lastTextForm.value = '';
|
listFromEmailAddress.clear();
|
||||||
lastTextTo.value = '';
|
listToEmailAddress.clear();
|
||||||
startDate.value = null;
|
_destinationMailboxSelected = null;
|
||||||
endDate.value = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _clearAllTextFieldInput() {
|
void _clearAllTextFieldInput() {
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
|
|
||||||
void updateFilterEmail({
|
void updateFilterEmail({
|
||||||
Option<Set<String>>? fromOption,
|
Option<Set<String>>? fromOption,
|
||||||
Set<String>? to,
|
Option<Set<String>>? toOption,
|
||||||
SearchQuery? text,
|
SearchQuery? text,
|
||||||
Option<String>? subjectOption,
|
Option<String>? subjectOption,
|
||||||
Set<String>? notKeyword,
|
Set<String>? notKeyword,
|
||||||
@@ -185,7 +185,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
}) {
|
}) {
|
||||||
searchEmailFilter.value = searchEmailFilter.value.copyWith(
|
searchEmailFilter.value = searchEmailFilter.value.copyWith(
|
||||||
fromOption: fromOption,
|
fromOption: fromOption,
|
||||||
to: to,
|
toOption: toOption,
|
||||||
text: text,
|
text: text,
|
||||||
subjectOption: subjectOption,
|
subjectOption: subjectOption,
|
||||||
notKeyword: notKeyword,
|
notKeyword: notKeyword,
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class SearchEmailFilter with EquatableMixin {
|
|||||||
|
|
||||||
SearchEmailFilter copyWith({
|
SearchEmailFilter copyWith({
|
||||||
Option<Set<String>>? fromOption,
|
Option<Set<String>>? fromOption,
|
||||||
Set<String>? to,
|
Option<Set<String>>? toOption,
|
||||||
SearchQuery? text,
|
SearchQuery? text,
|
||||||
Option<String>? subjectOption,
|
Option<String>? subjectOption,
|
||||||
Set<String>? notKeyword,
|
Set<String>? notKeyword,
|
||||||
@@ -60,7 +60,7 @@ class SearchEmailFilter with EquatableMixin {
|
|||||||
}) {
|
}) {
|
||||||
return SearchEmailFilter(
|
return SearchEmailFilter(
|
||||||
from: _getOptionParam(fromOption, from),
|
from: _getOptionParam(fromOption, from),
|
||||||
to: to ?? this.to,
|
to: _getOptionParam(toOption, to),
|
||||||
text: text ?? this.text,
|
text: text ?? this.text,
|
||||||
subject: _getOptionParam(subjectOption, subject),
|
subject: _getOptionParam(subjectOption, subject),
|
||||||
notKeyword: notKeyword ?? this.notKeyword,
|
notKeyword: notKeyword ?? this.notKeyword,
|
||||||
|
|||||||
+2
-2
@@ -47,7 +47,7 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: _buildButton(
|
child: _buildButton(
|
||||||
onAction: () {
|
onAction: () {
|
||||||
controller.cleanSearchFilter(context);
|
controller.clearSearchFilter(context);
|
||||||
popBack();
|
popBack();
|
||||||
},
|
},
|
||||||
colorButton: Colors.white,
|
colorButton: Colors.white,
|
||||||
@@ -79,7 +79,7 @@ class AdvancedSearchFilterFormBottomView extends GetWidget<AdvancedFilterControl
|
|||||||
const Spacer(),
|
const Spacer(),
|
||||||
_buildButton(
|
_buildButton(
|
||||||
onAction: () {
|
onAction: () {
|
||||||
controller.cleanSearchFilter(context);
|
controller.clearSearchFilter(context);
|
||||||
popBack();
|
popBack();
|
||||||
},
|
},
|
||||||
colorButton: Colors.transparent,
|
colorButton: Colors.transparent,
|
||||||
|
|||||||
+6
-6
@@ -27,9 +27,9 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return FocusTraversalGroup(
|
return FocusTraversalGroup(
|
||||||
child: Obx(() => Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
TextFieldAutocompleteEmailAddressWeb(
|
Obx(() => TextFieldAutocompleteEmailAddressWeb(
|
||||||
field: AdvancedSearchFilterField.from,
|
field: AdvancedSearchFilterField.from,
|
||||||
listEmailAddress: controller.listFromEmailAddress,
|
listEmailAddress: controller.listFromEmailAddress,
|
||||||
expandMode: controller.fromAddressExpandMode.value,
|
expandMode: controller.fromAddressExpandMode.value,
|
||||||
@@ -40,8 +40,8 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
||||||
),
|
)),
|
||||||
TextFieldAutocompleteEmailAddressWeb(
|
Obx(() => TextFieldAutocompleteEmailAddressWeb(
|
||||||
field: AdvancedSearchFilterField.to,
|
field: AdvancedSearchFilterField.to,
|
||||||
listEmailAddress: controller.listToEmailAddress,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
expandMode: controller.toAddressExpandMode.value,
|
expandMode: controller.toAddressExpandMode.value,
|
||||||
@@ -52,7 +52,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
|
||||||
),
|
)),
|
||||||
_buildFilterField(
|
_buildFilterField(
|
||||||
textEditingController: controller.subjectFilterInputController,
|
textEditingController: controller.subjectFilterInputController,
|
||||||
context: context,
|
context: context,
|
||||||
@@ -109,7 +109,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
]),
|
]),
|
||||||
AdvancedSearchFilterFormBottomView(focusManager: controller.focusManager)
|
AdvancedSearchFilterFormBottomView(focusManager: controller.focusManager)
|
||||||
],
|
],
|
||||||
)),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -110,7 +110,6 @@ class _TextFieldAutocompleteEmailAddressWebState extends State<TextFieldAutocomp
|
|||||||
textInputAction: TextInputAction.done,
|
textInputAction: TextInputAction.done,
|
||||||
debounceDuration: TextFieldAutoCompleteEmailAddressWebStyles.debounceDuration,
|
debounceDuration: TextFieldAutoCompleteEmailAddressWebStyles.debounceDuration,
|
||||||
hasAddButton: false,
|
hasAddButton: false,
|
||||||
autofocus: widget.field == AdvancedSearchFilterField.from && _currentListEmailAddress.isEmpty,
|
|
||||||
inputDecoration: InputDecoration(
|
inputDecoration: InputDecoration(
|
||||||
filled: true,
|
filled: true,
|
||||||
fillColor: TextFieldAutoCompleteEmailAddressWebStyles.textInputFillColor,
|
fillColor: TextFieldAutoCompleteEmailAddressWebStyles.textInputFillColor,
|
||||||
|
|||||||
Reference in New Issue
Block a user