TF-3002 [MOBILE] Handle select & delete Starred search filters in search view
This commit is contained in:
@@ -14,6 +14,7 @@ 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';
|
||||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||||
import 'package:model/email/email_action_type.dart';
|
import 'package:model/email/email_action_type.dart';
|
||||||
import 'package:model/email/mark_star_action.dart';
|
import 'package:model/email/mark_star_action.dart';
|
||||||
import 'package:model/email/prefix_email_address.dart';
|
import 'package:model/email/prefix_email_address.dart';
|
||||||
@@ -135,6 +136,8 @@ class SearchEmailController extends BaseController
|
|||||||
|
|
||||||
Set<String> get listAddressOfFromFiltered => searchEmailFilter.value.from;
|
Set<String> get listAddressOfFromFiltered => searchEmailFilter.value.from;
|
||||||
|
|
||||||
|
Set<String> get listHasKeywordFiltered => searchEmailFilter.value.hasKeyword;
|
||||||
|
|
||||||
SearchEmailController(
|
SearchEmailController(
|
||||||
this._quickSearchEmailInteractor,
|
this._quickSearchEmailInteractor,
|
||||||
this._saveRecentSearchInteractor,
|
this._saveRecentSearchInteractor,
|
||||||
@@ -511,6 +514,21 @@ class SearchEmailController extends BaseController
|
|||||||
_searchEmailAction(context);
|
_searchEmailAction(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void selectStarredSearchFilter(BuildContext context) {
|
||||||
|
final listKeyword = listHasKeywordFiltered;
|
||||||
|
if (!listKeyword.contains(KeyWordIdentifier.emailFlagged.value)) {
|
||||||
|
listKeyword.add(KeyWordIdentifier.emailFlagged.value);
|
||||||
|
}
|
||||||
|
_updateSimpleSearchFilter(
|
||||||
|
hasKeywordOption: Some(listKeyword),
|
||||||
|
beforeOption: const None(),
|
||||||
|
positionOption: emailSortOrderType.value.isScrollByPosition()
|
||||||
|
? const Some(0)
|
||||||
|
: const None()
|
||||||
|
);
|
||||||
|
_searchEmailAction(context);
|
||||||
|
}
|
||||||
|
|
||||||
bool checkQuickSearchFilterSelected(QuickSearchFilter filter) {
|
bool checkQuickSearchFilterSelected(QuickSearchFilter filter) {
|
||||||
switch (filter) {
|
switch (filter) {
|
||||||
case QuickSearchFilter.hasAttachment:
|
case QuickSearchFilter.hasAttachment:
|
||||||
@@ -702,6 +720,7 @@ class SearchEmailController extends BaseController
|
|||||||
Option<UTCDate>? endDateOption,
|
Option<UTCDate>? endDateOption,
|
||||||
Option<Set<Comparator>>? sortOrderOption,
|
Option<Set<Comparator>>? sortOrderOption,
|
||||||
Option<int>? positionOption,
|
Option<int>? positionOption,
|
||||||
|
Option<Set<String>>? hasKeywordOption,
|
||||||
}) {
|
}) {
|
||||||
searchEmailFilter.value = searchEmailFilter.value.copyWith(
|
searchEmailFilter.value = searchEmailFilter.value.copyWith(
|
||||||
fromOption: fromOption,
|
fromOption: fromOption,
|
||||||
@@ -715,6 +734,7 @@ class SearchEmailController extends BaseController
|
|||||||
endDateOption: endDateOption,
|
endDateOption: endDateOption,
|
||||||
sortOrderOption: sortOrderOption,
|
sortOrderOption: sortOrderOption,
|
||||||
positionOption: positionOption,
|
positionOption: positionOption,
|
||||||
|
hasKeywordOption: hasKeywordOption,
|
||||||
);
|
);
|
||||||
searchEmailFilter.refresh();
|
searchEmailFilter.refresh();
|
||||||
}
|
}
|
||||||
@@ -934,7 +954,7 @@ class SearchEmailController extends BaseController
|
|||||||
_deleteFolderSearchFilter(context);
|
_deleteFolderSearchFilter(context);
|
||||||
break;
|
break;
|
||||||
case QuickSearchFilter.starred:
|
case QuickSearchFilter.starred:
|
||||||
_deleteFolderSearchFilter(context);
|
_deleteStarredSearchFilter(context);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -1014,6 +1034,17 @@ class SearchEmailController extends BaseController
|
|||||||
_searchEmailAction(context);
|
_searchEmailAction(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _deleteStarredSearchFilter(BuildContext context) {
|
||||||
|
_updateSimpleSearchFilter(
|
||||||
|
hasKeywordOption: const None(),
|
||||||
|
beforeOption: const None(),
|
||||||
|
positionOption: emailSortOrderType.value.isScrollByPosition()
|
||||||
|
? const Some(0)
|
||||||
|
: const None()
|
||||||
|
);
|
||||||
|
_searchEmailAction(context);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
textInputSearchFocus.removeListener(_onSearchTextInputListener);
|
textInputSearchFocus.removeListener(_onSearchTextInputListener);
|
||||||
|
|||||||
@@ -291,6 +291,9 @@ class SearchEmailView extends GetWidget<SearchEmailController>
|
|||||||
context,
|
context,
|
||||||
controller.mailboxFiltered);
|
controller.mailboxFiltered);
|
||||||
break;
|
break;
|
||||||
|
case QuickSearchFilter.starred:
|
||||||
|
controller.selectStarredSearchFilter(context);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user