diff --git a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart index 95a552be9..a29a2e371 100644 --- a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart +++ b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart @@ -1,10 +1,8 @@ import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/utils/theme_utils.dart'; import 'package:core/utils/platform_info.dart'; -import 'package:flutter/material.dart'; -import 'package:model/model.dart'; +import 'package:model/extensions/presentation_mailbox_extension.dart'; +import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:tmail_ui_user/features/base/model/popup_menu_item_action.dart'; -import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/context_item_mailbox_action.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -157,48 +155,4 @@ mixin MailboxWidgetMixin { return popupMenuActions; } - - List popupMenuMailboxActionTiles( - BuildContext context, - ImagePaths imagePaths, - PresentationMailbox mailbox, - List contextMenuActions, - { - required Function(BuildContext, MailboxActions, PresentationMailbox) handleMailboxAction - } - ) { - return contextMenuActions - .map((action) => _buildPopupMenuItem( - context, - imagePaths, - action, - mailbox, - handleMailboxAction: handleMailboxAction - )) - .toList(); - } - - PopupMenuItem _buildPopupMenuItem( - BuildContext context, - ImagePaths imagePaths, - ContextMenuItemMailboxAction contextMenuItem, - PresentationMailbox mailbox, - { - required Function(BuildContext, MailboxActions, PresentationMailbox) handleMailboxAction - } - ) { - return PopupMenuItem( - padding: EdgeInsets.zero, - child: PopupItemWidget( - iconAction: contextMenuItem.action.getContextMenuIcon(imagePaths), - nameAction: contextMenuItem.action.getContextMenuTitle(AppLocalizations.of(context)), - colorIcon: contextMenuItem.action.getPopupMenuIconColor(), - padding: const EdgeInsetsDirectional.symmetric(horizontal: 12), - styleName: ThemeUtils.textStyleBodyBody3( - color: contextMenuItem.action.getPopupMenuTitleColor() - ), - onCallbackAction: () => handleMailboxAction(context, contextMenuItem.action, mailbox) - ) - ); - } } \ No newline at end of file diff --git a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart index 6cc65fe53..5dcb5606f 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart @@ -58,6 +58,7 @@ import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_na import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/mailbox_creator_arguments.dart'; import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/new_mailbox_arguments.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_create_filter_for_folder.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart'; import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_bindings.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; @@ -338,6 +339,12 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa case MailboxActions.newSubfolder: goToCreateNewMailboxView(context, parentMailbox: mailbox); break; + case MailboxActions.createFilter: + dashboardController.openCreateEmailRuleView(mailbox); + break; + case MailboxActions.recoverDeletedMessages: + dashboardController.gotoEmailRecovery(); + break; default: break; } diff --git a/lib/features/search/mailbox/presentation/search_mailbox_view.dart b/lib/features/search/mailbox/presentation/search_mailbox_view.dart index e77f13bff..de6d957ee 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_view.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_view.dart @@ -12,6 +12,7 @@ import 'package:get/get.dart'; import 'package:model/mailbox/presentation_mailbox.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/widget/popup_menu/popup_menu_item_action_widget.dart'; import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/search_mailbox_state.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart'; @@ -269,20 +270,18 @@ class SearchMailboxView extends GetWidget final isSubAddressingSupported = session?.isSubAddressingSupported(accountId) ?? false; - final contextMenuActions = listContextMenuItemAction( - mailbox, - controller.dashboardController.enableSpamReport, - deletedMessageVaultSupported, - isSubAddressingSupported, - controller.imagePaths, - AppLocalizations.of(context), - ); + if (position == null) { + final contextMenuActions = listContextMenuItemAction( + mailbox, + controller.dashboardController.enableSpamReport, + deletedMessageVaultSupported, + isSubAddressingSupported, + controller.imagePaths, + AppLocalizations.of(context), + ); - if (contextMenuActions.isEmpty) { - return; - } + if (contextMenuActions.isEmpty) return; - if (controller.responsiveUtils.isScreenWithShortestSide(context) || position == null) { controller.openBottomSheetContextMenuAction( context: context, itemActions: contextMenuActions, @@ -293,17 +292,34 @@ class SearchMailboxView extends GetWidget ), ); } else { - controller.openPopupMenuAction( - context, - position, - popupMenuMailboxActionTiles( - context, - controller.imagePaths, - mailbox, - contextMenuActions, - handleMailboxAction: controller.handleMailboxAction - ) + final popupMenuActions = getListPopupMenuItemAction( + AppLocalizations.of(context), + controller.imagePaths, + mailbox, + controller.dashboardController.enableSpamReport, + deletedMessageVaultSupported, + isSubAddressingSupported, ); + + if (popupMenuActions.isEmpty) return; + + final popupMenuItems = popupMenuActions.map((menuAction) { + return PopupMenuItem( + padding: EdgeInsets.zero, + child: PopupMenuItemActionWidget( + menuAction: menuAction, + menuActionClick: (menuAction) { + controller.handleMailboxAction( + context, + menuAction.action, + mailbox, + ); + }, + ), + ); + }).toList(); + + controller.openPopupMenuAction(context, position, popupMenuItems); } } } \ No newline at end of file