diff --git a/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart b/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart index bf26e6a17..ab8bf0544 100644 --- a/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart +++ b/lib/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart @@ -81,6 +81,12 @@ typedef OpenPopupMenuActionGroup = Future Function( PopupMenuActionGroupWidget popupMenuWidget, ); +typedef OnHandleEmailByActionType = void Function( + EmailActionType actionType, + PresentationEmail presentationEmail, + PresentationMailbox? mailboxContain, +); + class EmailActionReactor with LabelSubMenuMixin { EmailActionReactor( this._markAsEmailReadInteractor, diff --git a/lib/features/thread/presentation/mixin/email_more_action_context_menu_mixin.dart b/lib/features/thread/presentation/mixin/email_more_action_context_menu_mixin.dart new file mode 100644 index 000000000..1ae3b25d5 --- /dev/null +++ b/lib/features/thread/presentation/mixin/email_more_action_context_menu_mixin.dart @@ -0,0 +1,163 @@ +import 'package:core/presentation/resources/image_paths.dart'; +import 'package:core/utils/platform_info.dart'; +import 'package:flutter/material.dart'; +import 'package:labels/model/label.dart'; +import 'package:model/email/email_action_type.dart'; +import 'package:model/email/presentation_email.dart'; +import 'package:model/extensions/presentation_mailbox_extension.dart'; +import 'package:tmail_ui_user/features/base/widget/popup_menu/popup_menu_action_group_widget.dart'; +import 'package:tmail_ui_user/features/base/widget/popup_menu/popup_submenu_controller.dart'; +import 'package:tmail_ui_user/features/email/presentation/model/context_item_email_action.dart'; +import 'package:tmail_ui_user/features/email/presentation/model/popup_menu_item_email_action.dart'; +import 'package:tmail_ui_user/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart'; +import 'package:tmail_ui_user/features/labels/presentation/mixin/label_sub_menu_mixin.dart'; +import 'package:tmail_ui_user/features/labels/presentation/widgets/label_item_context_menu.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; +import 'package:tmail_ui_user/main/routes/route_navigation.dart'; + +class EmailContextMenuParams { + final BuildContext context; + final PresentationEmail email; + final ImagePaths imagePaths; + final bool isLabelAvailable; + final List