TF-3002 [WEB] Add To/Folder search filters
This commit is contained in:
+19
-5
@@ -118,7 +118,7 @@ class AdvancedFilterController extends BaseController {
|
||||
searchController.updateFilterEmail(sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder());
|
||||
|
||||
searchController.updateFilterEmail(
|
||||
mailbox: _destinationMailboxSelected,
|
||||
mailboxOption: optionOf(_destinationMailboxSelected),
|
||||
subjectOption: optionOf(subjectFilterInputController.text),
|
||||
emailReceiveTimeType: dateFilterSelectedFormAdvancedSearch.value,
|
||||
hasAttachment: hasAttachment.value,
|
||||
@@ -397,8 +397,17 @@ class AdvancedFilterController extends BaseController {
|
||||
);
|
||||
} else if (action is ClearDateRangeToAdvancedSearch) {
|
||||
_updateDateRangeTime(action.receiveTime);
|
||||
} else if (action is StartSearchEmailAction && action.filter == QuickSearchFilter.from) {
|
||||
_updateFromField();
|
||||
} else if (action is StartSearchEmailAction) {
|
||||
switch(action.filter) {
|
||||
case QuickSearchFilter.from:
|
||||
_updateFromField();
|
||||
break;
|
||||
case QuickSearchFilter.to:
|
||||
_updateToField();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (action is SearchEmailByFromFieldsAction) {
|
||||
searchController.clearSearchFilter();
|
||||
_resetAllToOriginalValue();
|
||||
@@ -437,8 +446,13 @@ class AdvancedFilterController extends BaseController {
|
||||
}
|
||||
|
||||
void _updateFromField() {
|
||||
final listEmailAddress = searchEmailFilter.from.map((address) => EmailAddress(null, address)).toList();
|
||||
listFromEmailAddress = List.from(listEmailAddress);
|
||||
listFromEmailAddress = List.from(
|
||||
searchEmailFilter.from.map((address) => EmailAddress(null, address)));
|
||||
}
|
||||
|
||||
void _updateToField() {
|
||||
listToEmailAddress= List.from(
|
||||
searchEmailFilter.to.map((address) => EmailAddress(null, address)));
|
||||
}
|
||||
|
||||
void onSearchAction(BuildContext context) {
|
||||
|
||||
+61
@@ -240,6 +240,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
||||
PresentationMailbox? outboxMailbox;
|
||||
ComposerArguments? composerArguments;
|
||||
List<Identity>? _identities;
|
||||
ScrollController? listSearchFilterScrollController;
|
||||
|
||||
late StreamSubscription _emailAddressStreamSubscription;
|
||||
late StreamSubscription _emailContentStreamSubscription;
|
||||
@@ -297,6 +298,9 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
listSearchFilterScrollController = ScrollController();
|
||||
}
|
||||
_registerPendingEmailAddress();
|
||||
_registerPendingEmailContents();
|
||||
_registerPendingFileInfo();
|
||||
@@ -1679,6 +1683,60 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> selectToSearchFilter() async {
|
||||
if (accountId.value == null || sessionCurrent == null) return;
|
||||
|
||||
final contactArgument = ContactArguments(
|
||||
accountId.value!,
|
||||
sessionCurrent!,
|
||||
searchController.searchEmailFilter.value.to);
|
||||
|
||||
final newContact = await DialogRouter.pushGeneralDialog(
|
||||
routeName: AppRoutes.contact,
|
||||
arguments: contactArgument);
|
||||
|
||||
if (newContact is EmailAddress) {
|
||||
searchController.updateFilterEmail(toOption: Some({newContact.emailAddress}));
|
||||
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.to));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> selectFolderSearchFilter() async {
|
||||
if (accountId.value == null || sessionCurrent == null) return;
|
||||
|
||||
final mailboxIdSelected = searchController.mailboxFiltered?.id;
|
||||
|
||||
final destinationArgument = DestinationPickerArguments(
|
||||
accountId.value!,
|
||||
MailboxActions.select,
|
||||
sessionCurrent!,
|
||||
mailboxIdSelected: mailboxIdSelected);
|
||||
|
||||
final destinationMailbox = PlatformInfo.isWeb
|
||||
? await DialogRouter.pushGeneralDialog(
|
||||
routeName: AppRoutes.destinationPicker,
|
||||
arguments: destinationArgument)
|
||||
: await push(
|
||||
AppRoutes.destinationPicker,
|
||||
arguments: destinationArgument);
|
||||
|
||||
if (destinationMailbox is! PresentationMailbox) return;
|
||||
|
||||
if (destinationMailbox != PresentationMailbox.unifiedMailbox &&
|
||||
mailboxIdSelected != destinationMailbox.id) {
|
||||
|
||||
searchController.updateFilterEmail(
|
||||
mailboxOption: Some(destinationMailbox),
|
||||
beforeOption: const None(),
|
||||
positionOption: searchController.sortOrderFiltered.value.isScrollByPosition()
|
||||
? const Some(0)
|
||||
: const None()
|
||||
);
|
||||
|
||||
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.folder));
|
||||
}
|
||||
}
|
||||
|
||||
void selectReceiveTimeQuickSearchFilter(BuildContext context, EmailReceiveTimeType receiveTime) {
|
||||
log('MailboxDashBoardController::selectReceiveTimeQuickSearchFilter():receiveTime: $receiveTime');
|
||||
popBack();
|
||||
@@ -2694,6 +2752,9 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
if (PlatformInfo.isWeb) {
|
||||
listSearchFilterScrollController?.dispose();
|
||||
}
|
||||
_emailReceiveManager.closeEmailReceiveManagerStream();
|
||||
if (PlatformInfo.isIOS) {
|
||||
_iosNotificationManager?.dispose();
|
||||
|
||||
@@ -158,7 +158,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
SearchQuery? text,
|
||||
Option<String>? subjectOption,
|
||||
Set<String>? notKeyword,
|
||||
PresentationMailbox? mailbox,
|
||||
Option<PresentationMailbox>? mailboxOption,
|
||||
EmailReceiveTimeType? emailReceiveTimeType,
|
||||
bool? hasAttachment,
|
||||
Option<UTCDate>? beforeOption,
|
||||
@@ -173,7 +173,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
text: text,
|
||||
subjectOption: subjectOption,
|
||||
notKeyword: notKeyword,
|
||||
mailbox: mailbox,
|
||||
mailboxOption: mailboxOption,
|
||||
emailReceiveTimeType: emailReceiveTimeType,
|
||||
hasAttachment: hasAttachment,
|
||||
beforeOption: beforeOption,
|
||||
@@ -191,6 +191,8 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
|
||||
DateTime? get endDateFiltered => searchEmailFilter.value.endDate?.value.toLocal();
|
||||
|
||||
PresentationMailbox? get mailboxFiltered => searchEmailFilter.value.mailbox;
|
||||
|
||||
bool isSearchActive() =>
|
||||
searchState.value.searchStatus == SearchStatus.ACTIVE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user