TF-1709 Implement sortOrder

(cherry picked from commit b3e5844bf37c692f763ccbf66bcbfb63c75d2d9f)
This commit is contained in:
hieubt
2023-11-11 00:43:14 +07:00
committed by Dat Vu
parent f0713f3789
commit 34caadc2b7
9 changed files with 73 additions and 34 deletions
@@ -23,6 +23,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart' as search;
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/advanced_search_filter.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
@@ -127,6 +128,8 @@ class AdvancedFilterController extends BaseController {
searchController.updateFilterEmail(toOption: const None());
}
searchController.updateFilterEmail(sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder());
searchController.updateFilterEmail(
mailbox: _destinationMailboxSelected,
subjectOption: optionOf(subjectFilterInputController.text),
@@ -410,12 +413,19 @@ class AdvancedFilterController extends BaseController {
}
}
void updateSortOrder(EmailSortOrderType? sortOrder) {
if (sortOrder != null) {
searchController.sortOrderFiltered.value = sortOrder;
}
}
void _resetAllToOriginalValue() {
_updateDateRangeTime(EmailReceiveTimeType.allTime);
hasAttachment.value = false;
listFromEmailAddress.clear();
listToEmailAddress.clear();
_destinationMailboxSelected = null;
searchController.sortOrderFiltered.value = EmailSortOrderType.mostRecent;
}
void _clearAllTextFieldInput() {
@@ -84,6 +84,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/down
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/draggable_app_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/refresh_action_view_event.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
@@ -1533,6 +1534,14 @@ class MailboxDashBoardController extends ReloadableController {
}
}
void selectSortOrderQuickSearchFilter(BuildContext context, EmailSortOrderType sortOrder) {
log('MailboxDashBoardController::selectSortOrderQuickSearchFilter():sortOrder: $sortOrder');
popBack();
searchController.sortOrderFiltered.value = sortOrder;
searchController.updateFilterEmail(sortOrderOption: sortOrder.getSortOrder());
dispatchAction(StartSearchEmailAction());
}
bool isEmptyTrashBannerEnabledOnWeb(BuildContext context) {
return selectedMailbox.value != null &&
selectedMailbox.value!.isTrash &&
@@ -26,6 +26,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
@@ -45,6 +46,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
final listFilterOnSuggestionForm = RxList<QuickSearchFilter>();
final simpleSearchIsActivated = RxBool(false);
final advancedSearchIsActivated = RxBool(false);
final sortOrderFiltered = EmailSortOrderType.mostRecent.obs;
SearchQuery? get searchQuery => searchEmailFilter.value.text;
@@ -82,6 +84,8 @@ class SearchController extends BaseController with DateRangePickerMixin {
final newListEmailAddress = isFilterSelected ? <String>{} : <String>{userProfile.email};
updateFilterEmail(fromOption: Some(newListEmailAddress));
return;
case QuickSearchFilter.sortBy:
return;
}
}
@@ -179,7 +183,8 @@ class SearchController extends BaseController with DateRangePickerMixin {
bool? hasAttachment,
Option<UTCDate>? beforeOption,
Option<UTCDate>? startDateOption,
Option<UTCDate>? endDateOption
Option<UTCDate>? endDateOption,
Option<Set<Comparator>>? sortOrderOption,
}) {
searchEmailFilter.value = searchEmailFilter.value.copyWith(
fromOption: fromOption,
@@ -193,6 +198,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
beforeOption: beforeOption,
startDateOption: startDateOption,
endDateOption: endDateOption,
sortOrderOption: sortOrderOption,
);
searchEmailFilter.refresh();
}