TF-1231 When remove Subject in AdvancedSearch, filter is not update because it is empty

This commit is contained in:
Dat PHAM HOANG
2022-12-08 16:34:52 +07:00
committed by Dat H. Pham
parent 077eeed38b
commit d9c0ded54d
3 changed files with 20 additions and 14 deletions
@@ -1,5 +1,6 @@
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:core/core.dart'; import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_date_range_picker/multiple_view_date_range_picker.dart'; import 'package:flutter_date_range_picker/multiple_view_date_range_picker.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -36,18 +37,14 @@ class AdvancedFilterController extends BaseController {
final lastTextForm = ''.obs; final lastTextForm = ''.obs;
final lastTextTo = ''.obs; final lastTextTo = ''.obs;
TextEditingController subjectFilterInputController = TextEditingController(); TextEditingController subjectFilterInputController = TextEditingController();
TextEditingController hasKeyWordFilterInputController = TextEditingController hasKeyWordFilterInputController = TextEditingController();
TextEditingController(); TextEditingController notKeyWordFilterInputController = TextEditingController();
TextEditingController notKeyWordFilterInputController =
TextEditingController();
TextEditingController dateFilterInputController = TextEditingController(); TextEditingController dateFilterInputController = TextEditingController();
TextEditingController mailBoxFilterInputController = TextEditingController(); TextEditingController mailBoxFilterInputController = TextEditingController();
ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact;
ContactSuggestionSource.tMailContact;
final SearchController searchController = Get.find<SearchController>(); final SearchController searchController = Get.find<SearchController>();
final MailboxDashBoardController _mailboxDashBoardController = final MailboxDashBoardController _mailboxDashBoardController = Get.find<MailboxDashBoardController>();
Get.find<MailboxDashBoardController>();
final _appToast = Get.find<AppToast>(); final _appToast = Get.find<AppToast>();
final _imagePaths = Get.find<ImagePaths>(); final _imagePaths = Get.find<ImagePaths>();
@@ -129,8 +126,7 @@ class AdvancedFilterController extends BaseController {
} }
searchController.updateFilterEmail( searchController.updateFilterEmail(
subject: subjectOption: optionOf(subjectFilterInputController.text),
StringConvert.writeEmptyToNull(subjectFilterInputController.text),
emailReceiveTimeType: dateFilterSelectedFormAdvancedSearch.value, emailReceiveTimeType: dateFilterSelectedFormAdvancedSearch.value,
hasAttachment: hasAttachment.value, hasAttachment: hasAttachment.value,
endDate: _endDate.toUTCDate(), endDate: _endDate.toUTCDate(),
@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:core/core.dart'; import 'package:core/core.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';
@@ -119,7 +120,7 @@ class SearchController extends BaseController {
Set<String>? from, Set<String>? from,
Set<String>? to, Set<String>? to,
SearchQuery? text, SearchQuery? text,
String? subject, Option<String>? subjectOption,
Set<String>? notKeyword, Set<String>? notKeyword,
PresentationMailbox? mailbox, PresentationMailbox? mailbox,
EmailReceiveTimeType? emailReceiveTimeType, EmailReceiveTimeType? emailReceiveTimeType,
@@ -132,7 +133,7 @@ class SearchController extends BaseController {
from: from, from: from,
to: to, to: to,
text: text, text: text,
subject: subject, subjectOption: subjectOption,
notKeyword: notKeyword, notKeyword: notKeyword,
mailbox: mailbox, mailbox: mailbox,
emailReceiveTimeType: emailReceiveTimeType, emailReceiveTimeType: emailReceiveTimeType,
@@ -1,3 +1,4 @@
import 'package:dartz/dartz.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.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/filter_operator.dart';
@@ -46,7 +47,7 @@ class SearchEmailFilter with EquatableMixin {
Set<String>? from, Set<String>? from,
Set<String>? to, Set<String>? to,
SearchQuery? text, SearchQuery? text,
String? subject, Option<String>? subjectOption,
Set<String>? notKeyword, Set<String>? notKeyword,
PresentationMailbox? mailbox, PresentationMailbox? mailbox,
EmailReceiveTimeType? emailReceiveTimeType, EmailReceiveTimeType? emailReceiveTimeType,
@@ -59,7 +60,7 @@ class SearchEmailFilter with EquatableMixin {
from: from ?? this.from, from: from ?? this.from,
to: to ?? this.to, to: to ?? this.to,
text: text ?? this.text, text: text ?? this.text,
subject: subject ?? this.subject, subject: _getOptionParam(subjectOption, subject),
notKeyword: notKeyword ?? this.notKeyword, notKeyword: notKeyword ?? this.notKeyword,
mailbox: mailbox ?? this.mailbox, mailbox: mailbox ?? this.mailbox,
emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType, emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType,
@@ -70,6 +71,14 @@ class SearchEmailFilter with EquatableMixin {
); );
} }
T? _getOptionParam<T>(Option<T?>? option, T? defaultValue) {
if (option != null) {
return option.toNullable();
} else {
return defaultValue;
}
}
Filter? mappingToEmailFilterCondition({EmailFilterCondition? moreFilterCondition}) { Filter? mappingToEmailFilterCondition({EmailFilterCondition? moreFilterCondition}) {
final emailEmailFilterConditionShared = EmailFilterCondition( final emailEmailFilterConditionShared = EmailFilterCondition(
text: text?.value.trim().isNotEmpty == true text: text?.value.trim().isNotEmpty == true