TF-1063 Disable search email when open mailbox
This commit is contained in:
+54
-3
@@ -15,6 +15,7 @@ import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete
|
||||
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/input_field_focus_manager.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||
@@ -62,6 +63,14 @@ class AdvancedFilterController extends BaseController {
|
||||
|
||||
DateTime? get endDate => _endDate;
|
||||
|
||||
late Worker _dashboardActionWorker;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
_registerWorkerListener();
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
if (!BuildUtils.isWeb) {
|
||||
@@ -80,7 +89,7 @@ class AdvancedFilterController extends BaseController {
|
||||
}
|
||||
|
||||
void cleanSearchFilter(BuildContext context) {
|
||||
searchController.cleanSearchFilter();
|
||||
searchController.clearSearchFilter();
|
||||
dateFilterSelectedFormAdvancedSearch.value = EmailReceiveTimeType.allTime;
|
||||
clearDateRangeOfFilter();
|
||||
subjectFilterInputController.text = '';
|
||||
@@ -88,7 +97,7 @@ class AdvancedFilterController extends BaseController {
|
||||
notKeyWordFilterInputController.text = '';
|
||||
dateFilterInputController.text = '';
|
||||
hasAttachment.value = false;
|
||||
searchController.isAdvancedSearchHasApply.value = false;
|
||||
searchController.deactivateAdvancedSearch();
|
||||
searchController.isAdvancedSearchViewOpen.toggle();
|
||||
_mailboxDashBoardController.searchEmail(
|
||||
context, StringConvert.writeNullToEmpty(searchEmailFilter.text?.value));
|
||||
@@ -167,7 +176,11 @@ class AdvancedFilterController extends BaseController {
|
||||
|
||||
void applyAdvancedSearchFilter(BuildContext context) {
|
||||
_updateFilterEmailFromAdvancedSearchView();
|
||||
searchController.isAdvancedSearchHasApply.value = isAdvancedSearchHasApplied;
|
||||
if (isAdvancedSearchHasApplied) {
|
||||
searchController.activateAdvancedSearch();
|
||||
} else {
|
||||
searchController.deactivateAdvancedSearch();
|
||||
}
|
||||
if (!isAdvancedSearchHasApplied) {
|
||||
final newSearchEmailFilter = searchController.searchEmailFilter.value.clearBeforeDate();
|
||||
searchController.searchEmailFilter.value = newSearchEmailFilter;
|
||||
@@ -357,6 +370,43 @@ class AdvancedFilterController extends BaseController {
|
||||
endDate: _endDate.toUTCDate());
|
||||
}
|
||||
|
||||
void _resetAllToOriginalValue() {
|
||||
dateFilterSelectedFormAdvancedSearch.value = EmailReceiveTimeType.allTime;
|
||||
hasAttachment.value = false;
|
||||
lastTextForm.value = '';
|
||||
lastTextTo.value = '';
|
||||
_startDate = null;
|
||||
_endDate = null;
|
||||
}
|
||||
|
||||
void _clearAllTextFieldInput() {
|
||||
subjectFilterInputController.clear();
|
||||
hasKeyWordFilterInputController.clear();
|
||||
notKeyWordFilterInputController.clear();
|
||||
dateFilterInputController.clear();
|
||||
mailBoxFilterInputController.clear();
|
||||
}
|
||||
|
||||
void _registerWorkerListener() {
|
||||
_dashboardActionWorker = ever(
|
||||
_mailboxDashBoardController.dashBoardAction,
|
||||
(action) {
|
||||
if (action is ClearAllFieldOfAdvancedSearchAction) {
|
||||
_handleClearAllFieldOfAdvancedSearch();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void _unregisterWorkerListener() {
|
||||
_dashboardActionWorker.dispose();
|
||||
}
|
||||
|
||||
void _handleClearAllFieldOfAdvancedSearch() {
|
||||
_resetAllToOriginalValue();
|
||||
_clearAllTextFieldInput();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
focusManager.dispose();
|
||||
@@ -365,6 +415,7 @@ class AdvancedFilterController extends BaseController {
|
||||
notKeyWordFilterInputController.dispose();
|
||||
mailBoxFilterInputController.dispose();
|
||||
dateFilterInputController.dispose();
|
||||
_unregisterWorkerListener();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -426,7 +426,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
|
||||
void clearSearchEmail() {
|
||||
dispatchAction(ClearSearchEmailAction());
|
||||
searchController.disableSearch();
|
||||
searchController.disableSimpleSearch();
|
||||
}
|
||||
|
||||
void _unSelectedMailbox() {
|
||||
@@ -1009,7 +1009,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
dashboardRoute.value = route;
|
||||
|
||||
if (dashboardRoute.value == DashboardRoutes.searchEmail) {
|
||||
searchController.enableSearch();
|
||||
searchController.activateSimpleSearch();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1200,6 +1200,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
void selectQuickSearchFilterAction(QuickSearchFilter filter) {
|
||||
log('MailboxDashBoardController::selectQuickSearchFilterAction(): filter: $filter');
|
||||
selectQuickSearchFilter(quickSearchFilter: filter);
|
||||
dispatchAction(StartSearchEmailAction());
|
||||
}
|
||||
|
||||
@@ -34,17 +34,12 @@ class SearchController extends BaseController {
|
||||
final ResponsiveUtils _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
final searchInputController = TextEditingController();
|
||||
final searchEmailFilter = SearchEmailFilter().obs;
|
||||
final searchEmailFilter = SearchEmailFilter.initial().obs;
|
||||
final searchState = SearchState.initial().obs;
|
||||
final isAdvancedSearchViewOpen = false.obs;
|
||||
final isAdvancedSearchHasApply = false.obs;
|
||||
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
|
||||
final mailboxFilterSelectedFormAdvancedSearch = Rxn<PresentationMailbox>();
|
||||
final hasAttachment = false.obs;
|
||||
final emailReceiveTimeType = Rxn<EmailReceiveTimeType>();
|
||||
final searchIsActive = RxBool(false);
|
||||
|
||||
SearchEmailFilter get searchEmailFilterValue => searchEmailFilter.value;
|
||||
final simpleSearchIsActivated = RxBool(false);
|
||||
final advancedSearchIsActivated = RxBool(false);
|
||||
|
||||
SearchQuery? get searchQuery => searchEmailFilter.value.text;
|
||||
|
||||
@@ -66,8 +61,8 @@ class SearchController extends BaseController {
|
||||
isAdvancedSearchViewOpen.toggle();
|
||||
}
|
||||
|
||||
cleanSearchFilter() {
|
||||
searchEmailFilter.value = SearchEmailFilter();
|
||||
void clearSearchFilter() {
|
||||
searchEmailFilter.value = SearchEmailFilter.initial();
|
||||
}
|
||||
|
||||
void selectQuickSearchFilter({
|
||||
@@ -145,6 +140,7 @@ class SearchController extends BaseController {
|
||||
startDate: startDate,
|
||||
endDate: endDate,
|
||||
);
|
||||
searchEmailFilter.refresh();
|
||||
}
|
||||
|
||||
void _registerSearchFocusListener() {
|
||||
@@ -152,10 +148,10 @@ class SearchController extends BaseController {
|
||||
final hasFocus = searchFocus.hasFocus;
|
||||
final query = searchEmailFilter.value.text?.value;
|
||||
log('SearchController::_registerSearchFocusListener(): hasFocus: $hasFocus | query: $query');
|
||||
if (!hasFocus && (query == null || query.isEmpty) && isAdvancedSearchHasApply.isFalse) {
|
||||
if (!hasFocus && (query == null || query.isEmpty) && advancedSearchIsActivated.isFalse) {
|
||||
updateFilterEmail(text: SearchQuery.initial());
|
||||
searchInputController.clear();
|
||||
cleanSearchFilter();
|
||||
clearSearchFilter();
|
||||
searchFocus.unfocus();
|
||||
}
|
||||
});
|
||||
@@ -164,19 +160,16 @@ class SearchController extends BaseController {
|
||||
bool isSearchActive() =>
|
||||
searchState.value.searchStatus == SearchStatus.ACTIVE;
|
||||
|
||||
bool isAdvanceSearchActive() => isAdvancedSearchHasApply.isTrue;
|
||||
|
||||
bool get isSearchEmailRunning => isSearchActive() || isAdvanceSearchActive();
|
||||
bool get isSearchEmailRunning => simpleSearchIsActivated.isTrue || advancedSearchIsActivated.isTrue;
|
||||
|
||||
void enableSearch() {
|
||||
searchState.value = searchState.value.enableSearchState();
|
||||
}
|
||||
|
||||
void disableSearch() {
|
||||
searchState.value = searchState.value.disableSearchState();
|
||||
void disableSimpleSearch() {
|
||||
updateFilterEmail(text: SearchQuery.initial());
|
||||
searchInputController.clear();
|
||||
searchFocus.unfocus();
|
||||
_clearAllTextInputSimpleSearch();
|
||||
hideSimpleSearchFormView();
|
||||
}
|
||||
|
||||
void clearTextSearch() {
|
||||
@@ -237,6 +230,46 @@ class SearchController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
void activateSimpleSearch() {
|
||||
simpleSearchIsActivated.value = true;
|
||||
}
|
||||
|
||||
void deactivateSimpleSearch() {
|
||||
simpleSearchIsActivated.value = false;
|
||||
}
|
||||
|
||||
void activateAdvancedSearch() {
|
||||
advancedSearchIsActivated.value = true;
|
||||
}
|
||||
|
||||
void deactivateAdvancedSearch() {
|
||||
advancedSearchIsActivated.value = false;
|
||||
}
|
||||
|
||||
void hideAdvancedSearchFormView() {
|
||||
isAdvancedSearchViewOpen.value = false;
|
||||
}
|
||||
|
||||
void hideSimpleSearchFormView() {
|
||||
searchState.value = searchState.value.disableSearchState();
|
||||
}
|
||||
|
||||
void _clearAllTextInputSimpleSearch() {
|
||||
searchInputController.clear();
|
||||
searchFocus.unfocus();
|
||||
emailReceiveTimeType.value = null;
|
||||
}
|
||||
|
||||
void disableAllSearchEmail() {
|
||||
_clearAllTextInputSimpleSearch();
|
||||
deactivateSimpleSearch();
|
||||
hideSimpleSearchFormView();
|
||||
|
||||
clearSearchFilter();
|
||||
deactivateAdvancedSearch();
|
||||
hideAdvancedSearchFormView();
|
||||
}
|
||||
|
||||
@override
|
||||
void onDone() {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user