TF-1358 Fix can not use advanced search in email view

This commit is contained in:
dab246
2022-12-28 16:22:19 +07:00
committed by Dat H. Pham
parent d9d0b71d35
commit f849766545
4 changed files with 44 additions and 32 deletions
@@ -9,6 +9,7 @@ import 'package:jmap_dart_client/jmap/core/session/session.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:model/model.dart'; import 'package:model/model.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart'; import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart';
import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart'; import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart';
@@ -288,6 +289,7 @@ class AdvancedFilterController extends BaseController {
backgroundColor: Colors.white, backgroundColor: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0)), borderRadius: BorderRadius.circular(18.0)),
child: PointerInterceptor(
child: MultipleViewDateRangePicker( child: MultipleViewDateRangePicker(
confirmText: AppLocalizations.of(context).setDate, confirmText: AppLocalizations.of(context).setDate,
cancelText: AppLocalizations.of(context).cancel, cancelText: AppLocalizations.of(context).cancel,
@@ -300,6 +302,7 @@ class AdvancedFilterController extends BaseController {
setDateActionCallback: ({startDate, endDate}) { setDateActionCallback: ({startDate, endDate}) {
_handleSelectDateRangeResult(context, startDate, endDate); _handleSelectDateRangeResult(context, startDate, endDate);
}, },
),
) )
); );
} }
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_portal/flutter_portal.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read_state.dart';
@@ -251,9 +252,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
} else { } else {
return PortalTarget( return PortalTarget(
visible: searchController.isAdvancedSearchViewOpen.isTrue, visible: searchController.isAdvancedSearchViewOpen.isTrue,
portalFollower: GestureDetector( portalFollower: PointerInterceptor(
child: GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () => searchController.selectOpenAdvanceSearch()), onTap: () => searchController.selectOpenAdvanceSearch()),
),
child: PortalTarget( child: PortalTarget(
visible: searchController.isAdvancedSearchViewOpen.isTrue, visible: searchController.isAdvancedSearchViewOpen.isTrue,
anchor: const Aligned( anchor: const Aligned(
@@ -2,6 +2,7 @@ import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_form.dart';
class AdvancedSearchFilterOverlay extends StatelessWidget { class AdvancedSearchFilterOverlay extends StatelessWidget {
@@ -17,7 +18,8 @@ class AdvancedSearchFilterOverlay extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final responsiveUtils = Get.find<ResponsiveUtils>(); final responsiveUtils = Get.find<ResponsiveUtils>();
return GestureDetector( return PointerInterceptor(
child: GestureDetector(
onTap: () => FocusManager.instance.primaryFocus?.unfocus(), onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
child: Padding( child: Padding(
padding: const EdgeInsets.only(top: 4, bottom: 16), padding: const EdgeInsets.only(top: 4, bottom: 16),
@@ -45,6 +47,7 @@ class AdvancedSearchFilterOverlay extends StatelessWidget {
), ),
), ),
), ),
),
); );
} }
@@ -5,6 +5,7 @@ import 'package:flutter_portal/flutter_portal.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
@@ -34,9 +35,11 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
return PortalTarget( return PortalTarget(
visible: controller.isAdvancedSearchViewOpen.isTrue, visible: controller.isAdvancedSearchViewOpen.isTrue,
portalFollower: GestureDetector( portalFollower: PointerInterceptor(
child: GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () => controller.selectOpenAdvanceSearch()), onTap: () => controller.selectOpenAdvanceSearch()),
),
child: PortalTarget( child: PortalTarget(
visible: controller.isAdvancedSearchViewOpen.isTrue, visible: controller.isAdvancedSearchViewOpen.isTrue,
anchor: const Aligned( anchor: const Aligned(