From d9c0ded54d83f35d981cc600b2e764562de595d2 Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Thu, 8 Dec 2022 16:34:52 +0700 Subject: [PATCH] TF-1231 When remove Subject in AdvancedSearch, filter is not update because it is empty --- .../controller/advanced_filter_controller.dart | 16 ++++++---------- .../controller/search_controller.dart | 5 +++-- .../model/search/search_email_filter.dart | 13 +++++++++++-- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart index ad5f69a9a..c6551d825 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart @@ -1,5 +1,6 @@ import 'package:collection/collection.dart'; import 'package:core/core.dart'; +import 'package:dartz/dartz.dart'; import 'package:flutter/material.dart'; import 'package:flutter_date_range_picker/multiple_view_date_range_picker.dart'; import 'package:get/get.dart'; @@ -36,18 +37,14 @@ class AdvancedFilterController extends BaseController { final lastTextForm = ''.obs; final lastTextTo = ''.obs; TextEditingController subjectFilterInputController = TextEditingController(); - TextEditingController hasKeyWordFilterInputController = - TextEditingController(); - TextEditingController notKeyWordFilterInputController = - TextEditingController(); + TextEditingController hasKeyWordFilterInputController = TextEditingController(); + TextEditingController notKeyWordFilterInputController = TextEditingController(); TextEditingController dateFilterInputController = TextEditingController(); TextEditingController mailBoxFilterInputController = TextEditingController(); - ContactSuggestionSource _contactSuggestionSource = - ContactSuggestionSource.tMailContact; + ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact; final SearchController searchController = Get.find(); - final MailboxDashBoardController _mailboxDashBoardController = - Get.find(); + final MailboxDashBoardController _mailboxDashBoardController = Get.find(); final _appToast = Get.find(); final _imagePaths = Get.find(); @@ -129,8 +126,7 @@ class AdvancedFilterController extends BaseController { } searchController.updateFilterEmail( - subject: - StringConvert.writeEmptyToNull(subjectFilterInputController.text), + subjectOption: optionOf(subjectFilterInputController.text), emailReceiveTimeType: dateFilterSelectedFormAdvancedSearch.value, hasAttachment: hasAttachment.value, endDate: _endDate.toUTCDate(), diff --git a/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart index 95517a767..8ceb89a79 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:core/core.dart'; +import 'package:dartz/dartz.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -119,7 +120,7 @@ class SearchController extends BaseController { Set? from, Set? to, SearchQuery? text, - String? subject, + Option? subjectOption, Set? notKeyword, PresentationMailbox? mailbox, EmailReceiveTimeType? emailReceiveTimeType, @@ -132,7 +133,7 @@ class SearchController extends BaseController { from: from, to: to, text: text, - subject: subject, + subjectOption: subjectOption, notKeyword: notKeyword, mailbox: mailbox, emailReceiveTimeType: emailReceiveTimeType, diff --git a/lib/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart b/lib/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart index 2481f2379..38704a4ab 100644 --- a/lib/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart +++ b/lib/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart @@ -1,3 +1,4 @@ +import 'package:dartz/dartz.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_operator.dart'; @@ -46,7 +47,7 @@ class SearchEmailFilter with EquatableMixin { Set? from, Set? to, SearchQuery? text, - String? subject, + Option? subjectOption, Set? notKeyword, PresentationMailbox? mailbox, EmailReceiveTimeType? emailReceiveTimeType, @@ -59,7 +60,7 @@ class SearchEmailFilter with EquatableMixin { from: from ?? this.from, to: to ?? this.to, text: text ?? this.text, - subject: subject ?? this.subject, + subject: _getOptionParam(subjectOption, subject), notKeyword: notKeyword ?? this.notKeyword, mailbox: mailbox ?? this.mailbox, emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType, @@ -70,6 +71,14 @@ class SearchEmailFilter with EquatableMixin { ); } + T? _getOptionParam(Option? option, T? defaultValue) { + if (option != null) { + return option.toNullable(); + } else { + return defaultValue; + } + } + Filter? mappingToEmailFilterCondition({EmailFilterCondition? moreFilterCondition}) { final emailEmailFilterConditionShared = EmailFilterCondition( text: text?.value.trim().isNotEmpty == true