TF-1833 Fix the filter From Me condition is not working in quick search
(cherry picked from commit 89856a226effbd7d491780b16ec7072973285dd5)
This commit is contained in:
+12
-4
@@ -1309,10 +1309,18 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
searchController.addFilterToSuggestionForm(filter);
|
searchController.addFilterToSuggestionForm(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<List<PresentationEmail>> quickSearchEmails() => searchController.quickSearchEmails(
|
Future<List<PresentationEmail>> quickSearchEmails(String query) async {
|
||||||
session: sessionCurrent!,
|
if (sessionCurrent != null && accountId.value != null && userProfile.value != null) {
|
||||||
accountId: accountId.value!
|
return searchController.quickSearchEmails(
|
||||||
);
|
session: sessionCurrent!,
|
||||||
|
accountId: accountId.value!,
|
||||||
|
userProfile: userProfile.value!,
|
||||||
|
query: query
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void addDownloadTask(DownloadTaskState task) {
|
void addDownloadTask(DownloadTaskState task) {
|
||||||
downloadController.addDownloadTask(task);
|
downloadController.addDownloadTask(task);
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart';
|
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart';
|
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||||
@@ -99,7 +98,8 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
Future<List<PresentationEmail>> quickSearchEmails({
|
Future<List<PresentationEmail>> quickSearchEmails({
|
||||||
required Session session,
|
required Session session,
|
||||||
required AccountId accountId,
|
required AccountId accountId,
|
||||||
UserProfile? userProfile
|
required String query,
|
||||||
|
required UserProfile userProfile,
|
||||||
}) async {
|
}) async {
|
||||||
return await _quickSearchEmailInteractor.execute(
|
return await _quickSearchEmailInteractor.execute(
|
||||||
session,
|
session,
|
||||||
@@ -108,7 +108,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
sort: <Comparator>{}..add(
|
sort: <Comparator>{}..add(
|
||||||
EmailComparator(EmailComparatorProperty.receivedAt)
|
EmailComparator(EmailComparatorProperty.receivedAt)
|
||||||
..setIsAscending(false)),
|
..setIsAscending(false)),
|
||||||
filter: _mappingToFilterOnSuggestionForm(userProfile),
|
filter: _mappingToFilterOnSuggestionForm(userProfile: userProfile, query: query),
|
||||||
properties: ThreadConstants.propertiesQuickSearch
|
properties: ThreadConstants.propertiesQuickSearch
|
||||||
).then((result) => result.fold(
|
).then((result) => result.fold(
|
||||||
(failure) => <PresentationEmail>[],
|
(failure) => <PresentationEmail>[],
|
||||||
@@ -118,11 +118,10 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Filter? _mappingToFilterOnSuggestionForm(UserProfile? userProfile) {
|
Filter? _mappingToFilterOnSuggestionForm({required String query, required UserProfile userProfile}) {
|
||||||
final searchText = searchEmailFilter.value.text?.value.trim();
|
log('SearchController::_mappingToFilterOnSuggestionForm():query: $query');
|
||||||
|
|
||||||
final filterCondition = EmailFilterCondition(
|
final filterCondition = EmailFilterCondition(
|
||||||
text: searchText?.isNotEmpty == true ? searchText : null,
|
text: query.isNotEmpty == true ? query : null,
|
||||||
after: listFilterOnSuggestionForm.contains(QuickSearchFilter.last7Days)
|
after: listFilterOnSuggestionForm.contains(QuickSearchFilter.last7Days)
|
||||||
? EmailReceiveTimeType.last7Days.toOldestUTCDate()
|
? EmailReceiveTimeType.last7Days.toOldestUTCDate()
|
||||||
: null,
|
: null,
|
||||||
@@ -131,17 +130,14 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
|||||||
: null,
|
: null,
|
||||||
hasAttachment: listFilterOnSuggestionForm.contains(QuickSearchFilter.hasAttachment)
|
hasAttachment: listFilterOnSuggestionForm.contains(QuickSearchFilter.hasAttachment)
|
||||||
? true
|
? true
|
||||||
|
: null,
|
||||||
|
from: listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe)
|
||||||
|
? userProfile.email
|
||||||
: null
|
: null
|
||||||
);
|
);
|
||||||
|
|
||||||
final listEmailCondition = {
|
return filterCondition.hasCondition
|
||||||
if (filterCondition.hasCondition) filterCondition,
|
? filterCondition
|
||||||
if (listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe) && userProfile != null)
|
|
||||||
LogicFilterOperator(Operator.AND, {EmailFilterCondition(from: userProfile.email)})
|
|
||||||
};
|
|
||||||
|
|
||||||
return listEmailCondition.isNotEmpty
|
|
||||||
? LogicFilterOperator(Operator.AND, listEmailCondition)
|
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
|||||||
fetchRecentActionCallback: controller.getAllRecentSearchAction,
|
fetchRecentActionCallback: controller.getAllRecentSearchAction,
|
||||||
itemRecentBuilder: (context, recent) => RecentSearchItemTileWidget(recent),
|
itemRecentBuilder: (context, recent) => RecentSearchItemTileWidget(recent),
|
||||||
onRecentSelected: (recent) => _invokeSelectRecentItem(context, recent),
|
onRecentSelected: (recent) => _invokeSelectRecentItem(context, recent),
|
||||||
suggestionsCallback: (pattern) => dashBoardController.quickSearchEmails(),
|
suggestionsCallback: dashBoardController.quickSearchEmails,
|
||||||
itemBuilder: (context, email) => EmailQuickSearchItemTileWidget(email, dashBoardController.selectedMailbox.value),
|
itemBuilder: (context, email) => EmailQuickSearchItemTileWidget(email, dashBoardController.selectedMailbox.value),
|
||||||
onSuggestionSelected: (presentationEmail) => _invokeSelectSuggestionItem(context, presentationEmail))
|
onSuggestionSelected: (presentationEmail) => _invokeSelectSuggestionItem(context, presentationEmail))
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user