TF-3759 Update style popup context menu for email more action on email view
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
Hello, World!
|
||||||
@@ -15,11 +15,11 @@ import 'package:model/extensions/presentation_email_extension.dart';
|
|||||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart';
|
import 'package:tmail_ui_user/features/base/widget/popup_menu/popup_menu_item_action_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
|
||||||
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
|
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart';
|
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/model/context_item_email_action.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/styles/email_view_styles.dart';
|
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_styles.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_banner_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_banner_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_detail_widget.dart';
|
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_detail_widget.dart';
|
||||||
@@ -526,34 +526,41 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
RelativeRect? position
|
RelativeRect? position
|
||||||
}) {
|
}) {
|
||||||
final mailboxContain = controller.getMailboxContain(presentationEmail);
|
final mailboxContain = controller.getMailboxContain(presentationEmail);
|
||||||
final moreActions = [
|
final isChildOfTeamMailboxes = mailboxContain?.isChildOfTeamMailboxes ?? false;
|
||||||
|
final isSpam = mailboxContain?.isSpam ?? false;
|
||||||
|
final isArchive = mailboxContain?.isArchive ?? false;
|
||||||
|
final isTemplates = mailboxContain?.isTemplates ?? false;
|
||||||
|
final isUnsubscribeEnabled = !presentationEmail.isSubscribed &&
|
||||||
|
controller.emailUnsubscribe.value != null;
|
||||||
|
final isCreateRuleEnabled = presentationEmail.from?.isNotEmpty == true;
|
||||||
|
final isDownloadMessageAsEMLEnabled =
|
||||||
|
PlatformInfo.isWeb && PlatformInfo.isCanvasKit;
|
||||||
|
|
||||||
|
final emailActions = [
|
||||||
EmailActionType.markAsUnread,
|
EmailActionType.markAsUnread,
|
||||||
if (mailboxContain?.isChildOfTeamMailboxes == false)
|
if (!isChildOfTeamMailboxes)
|
||||||
if (mailboxContain?.isSpam == true)
|
isSpam ? EmailActionType.unSpam : EmailActionType.moveToSpam,
|
||||||
EmailActionType.unSpam
|
if (isCreateRuleEnabled)
|
||||||
else
|
|
||||||
EmailActionType.moveToSpam,
|
|
||||||
if (presentationEmail.from?.isNotEmpty == true)
|
|
||||||
EmailActionType.createRule,
|
EmailActionType.createRule,
|
||||||
if (!presentationEmail.isSubscribed && controller.emailUnsubscribe.value != null)
|
if (isUnsubscribeEnabled)
|
||||||
EmailActionType.unsubscribe,
|
EmailActionType.unsubscribe,
|
||||||
if (mailboxContain?.isArchive == false)
|
if (!isArchive)
|
||||||
EmailActionType.archiveMessage,
|
EmailActionType.archiveMessage,
|
||||||
if (PlatformInfo.isWeb && PlatformInfo.isCanvasKit)
|
if (isDownloadMessageAsEMLEnabled)
|
||||||
EmailActionType.downloadMessageAsEML,
|
EmailActionType.downloadMessageAsEML,
|
||||||
if (mailboxContain?.isTemplates == false)
|
if (!isTemplates)
|
||||||
EmailActionType.editAsNewEmail,
|
EmailActionType.editAsNewEmail,
|
||||||
];
|
];
|
||||||
|
|
||||||
final contextMenuActions = moreActions
|
|
||||||
.map((action) => ContextItemEmailAction(
|
|
||||||
action,
|
|
||||||
AppLocalizations.of(context),
|
|
||||||
controller.imagePaths,
|
|
||||||
))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
if (position == null) {
|
if (position == null) {
|
||||||
|
final contextMenuActions = emailActions
|
||||||
|
.map((action) => ContextItemEmailAction(
|
||||||
|
action,
|
||||||
|
AppLocalizations.of(context),
|
||||||
|
controller.imagePaths,
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
|
||||||
controller.openBottomSheetContextMenuAction(
|
controller.openBottomSheetContextMenuAction(
|
||||||
context: context,
|
context: context,
|
||||||
itemActions: contextMenuActions,
|
itemActions: contextMenuActions,
|
||||||
@@ -567,39 +574,32 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
final popupMenuActions = emailActions.map((actionType) {
|
||||||
|
return PopupMenuItem(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
child: PopupMenuItemActionWidget(
|
||||||
|
menuAction: PopupMenuItemEmailAction(
|
||||||
|
actionType,
|
||||||
|
AppLocalizations.of(context),
|
||||||
|
controller.imagePaths,
|
||||||
|
),
|
||||||
|
menuActionClick: (menuAction) {
|
||||||
|
popBack();
|
||||||
|
controller.handleEmailAction(
|
||||||
|
context,
|
||||||
|
presentationEmail,
|
||||||
|
menuAction.action,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList();
|
||||||
|
|
||||||
controller.openPopupMenuAction(
|
controller.openPopupMenuAction(
|
||||||
context,
|
context,
|
||||||
position,
|
position,
|
||||||
_popupMenuEmailActionTile(context, presentationEmail, moreActions)
|
popupMenuActions,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<PopupMenuEntry> _popupMenuEmailActionTile(
|
|
||||||
BuildContext context,
|
|
||||||
PresentationEmail presentationEmail,
|
|
||||||
List<EmailActionType> actionTypes
|
|
||||||
) {
|
|
||||||
return actionTypes.map((action) {
|
|
||||||
return PopupMenuItem(
|
|
||||||
key: Key('${action.name}_action'),
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
child: PopupItemWidget(
|
|
||||||
iconAction: action.getIcon(controller.imagePaths),
|
|
||||||
nameAction: action.getTitle(AppLocalizations.of(context)),
|
|
||||||
colorIcon: AppColor.colorTextButton,
|
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
|
||||||
styleName: const TextStyle(
|
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
fontSize: 16,
|
|
||||||
color: Colors.black
|
|
||||||
),
|
|
||||||
onCallbackAction: () {
|
|
||||||
popBack();
|
|
||||||
controller.handleEmailAction(context, presentationEmail, action);
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}).toList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -640,9 +640,7 @@ class ThreadView extends GetWidget<ThreadController>
|
|||||||
if (!isDrafts && !isTemplates) EmailActionType.editAsNewEmail,
|
if (!isDrafts && !isTemplates) EmailActionType.editAsNewEmail,
|
||||||
];
|
];
|
||||||
|
|
||||||
if (listEmailActions.isEmpty) return;
|
if (position == null) {
|
||||||
|
|
||||||
if (controller.responsiveUtils.isScreenWithShortestSide(context)) {
|
|
||||||
final contextMenuActions = listEmailActions
|
final contextMenuActions = listEmailActions
|
||||||
.map((action) => ContextItemEmailAction(
|
.map((action) => ContextItemEmailAction(
|
||||||
action,
|
action,
|
||||||
|
|||||||
Reference in New Issue
Block a user