TF-4243 Add Delete label action to context menu
This commit is contained in:
@@ -104,7 +104,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
handleEmailAction: controller.handleEmailAction,
|
||||
additionalActions: [],
|
||||
emailIsRead: presentationEmail.hasRead,
|
||||
isLabelFeatureEnabled: controller.isLabelAvailable,
|
||||
isLabelAvailable: controller.isLabelAvailable,
|
||||
labels: controller.mailboxDashBoardController.labelController.labels,
|
||||
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
|
||||
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
|
||||
@@ -315,7 +315,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
EmailActionType.deletePermanently,
|
||||
],
|
||||
emailIsRead: presentationEmail.hasRead,
|
||||
isLabelFeatureEnabled: controller.isLabelAvailable,
|
||||
isLabelAvailable: controller.isLabelAvailable,
|
||||
labels: controller.mailboxDashBoardController.labelController.labels,
|
||||
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
|
||||
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
|
||||
|
||||
+2
-2
@@ -488,7 +488,7 @@ class EmailActionReactor {
|
||||
) handleEmailAction,
|
||||
required List<EmailActionType> additionalActions,
|
||||
required bool emailIsRead,
|
||||
required bool isLabelFeatureEnabled,
|
||||
required bool isLabelAvailable,
|
||||
required OpenBottomSheetContextMenuAction openBottomSheetContextMenu,
|
||||
required OpenPopupMenuActionGroup openPopupMenu,
|
||||
List<Label>? labels,
|
||||
@@ -507,7 +507,7 @@ class EmailActionReactor {
|
||||
if (EmailUtils.isReplyToListEnabled(presentationEmail.listPost ?? '') &&
|
||||
additionalActions.contains(EmailActionType.replyToList))
|
||||
EmailActionType.replyToList,
|
||||
if (isLabelFeatureEnabled)
|
||||
if (isLabelAvailable)
|
||||
EmailActionType.labelAs,
|
||||
if (PlatformInfo.isWeb &&
|
||||
PlatformInfo.isCanvasKit &&
|
||||
|
||||
@@ -28,6 +28,8 @@ extension HandleLabelActionTypeExtension on LabelController {
|
||||
if (label == null) return;
|
||||
openEditLabelModal(accountId: accountId, label: label);
|
||||
break;
|
||||
case LabelActionType.delete:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
mixin LabelContextMenuMixin on PopupContextMenuActionMixin {
|
||||
static const _labelActions = [LabelActionType.edit];
|
||||
static const _labelActions = [LabelActionType.edit, LabelActionType.delete];
|
||||
|
||||
Future<void> _openLabelPopupMenuAction(
|
||||
BuildContext context,
|
||||
|
||||
@@ -5,7 +5,8 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
enum LabelActionType {
|
||||
create,
|
||||
edit;
|
||||
edit,
|
||||
delete;
|
||||
|
||||
String getContextMenuTitle(AppLocalizations appLocalizations) {
|
||||
switch (this) {
|
||||
@@ -13,6 +14,8 @@ enum LabelActionType {
|
||||
return appLocalizations.create;
|
||||
case LabelActionType.edit:
|
||||
return appLocalizations.edit;
|
||||
case LabelActionType.delete:
|
||||
return appLocalizations.delete;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,15 +25,22 @@ enum LabelActionType {
|
||||
return appLocalizations.createANewLabel;
|
||||
case LabelActionType.edit:
|
||||
return appLocalizations.editLabel;
|
||||
case LabelActionType.delete:
|
||||
return appLocalizations.deleteLabel;
|
||||
}
|
||||
}
|
||||
|
||||
String getModalSubtitle(AppLocalizations appLocalizations) {
|
||||
String getModalSubtitle(
|
||||
AppLocalizations appLocalizations, {
|
||||
String labelName = '',
|
||||
}) {
|
||||
switch (this) {
|
||||
case LabelActionType.create:
|
||||
return appLocalizations.organizeYourInboxWithACustomCategory;
|
||||
case LabelActionType.edit:
|
||||
return appLocalizations.updateTheLabelName;
|
||||
case LabelActionType.delete:
|
||||
return appLocalizations.areYouSureYouWantToDeleteTheLabel(labelName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,15 +50,19 @@ enum LabelActionType {
|
||||
return appLocalizations.createLabel;
|
||||
case LabelActionType.edit:
|
||||
return appLocalizations.save;
|
||||
case LabelActionType.delete:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
Key getModalPositiveActionKey() {
|
||||
Key? getModalPositiveActionKey() {
|
||||
switch (this) {
|
||||
case LabelActionType.create:
|
||||
return const Key('create_label_button_action');
|
||||
case LabelActionType.edit:
|
||||
return const Key('save_label_button_action');
|
||||
case LabelActionType.delete:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,16 +72,44 @@ enum LabelActionType {
|
||||
return imagePaths.icAddNewFolder;
|
||||
case LabelActionType.edit:
|
||||
return imagePaths.icRenameMailbox;
|
||||
case LabelActionType.delete:
|
||||
return imagePaths.icDeleteMailbox;
|
||||
}
|
||||
}
|
||||
|
||||
Color getPopupMenuTitleColor() => Colors.black;
|
||||
Color getPopupMenuTitleColor() {
|
||||
switch (this) {
|
||||
case LabelActionType.delete:
|
||||
return AppColor.redFF3347;
|
||||
default:
|
||||
return Colors.black;
|
||||
}
|
||||
}
|
||||
|
||||
Color getPopupMenuIconColor() => AppColor.steelGrayA540;
|
||||
Color getPopupMenuIconColor() {
|
||||
switch (this) {
|
||||
case LabelActionType.delete:
|
||||
return AppColor.redFF3347;
|
||||
default:
|
||||
return AppColor.steelGrayA540;
|
||||
}
|
||||
}
|
||||
|
||||
Color getContextMenuIconColor() =>
|
||||
AppColor.gray424244.withValues(alpha: 0.72);
|
||||
Color getContextMenuIconColor() {
|
||||
switch (this) {
|
||||
case LabelActionType.delete:
|
||||
return AppColor.redFF3347;
|
||||
default:
|
||||
return AppColor.gray424244.withValues(alpha: 0.72);
|
||||
}
|
||||
}
|
||||
|
||||
Color getContextMenuTitleColor() =>
|
||||
AppColor.gray424244.withValues(alpha: 0.9);
|
||||
Color getContextMenuTitleColor() {
|
||||
switch (this) {
|
||||
case LabelActionType.delete:
|
||||
return AppColor.redFF3347;
|
||||
default:
|
||||
return AppColor.gray424244.withValues(alpha: 0.9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5421,5 +5421,21 @@
|
||||
"placeholders": {
|
||||
"labelName": {}
|
||||
}
|
||||
},
|
||||
"deleteLabel": "Delete label",
|
||||
"@deleteLabel": {
|
||||
"type": "text",
|
||||
"placeholders_order": [],
|
||||
"placeholders": {}
|
||||
},
|
||||
"areYouSureYouWantToDeleteTheLabel": "Are you sure you want to delete the label \"{labelName}\"?",
|
||||
"@areYouSureYouWantToDeleteTheLabel": {
|
||||
"type": "text",
|
||||
"placeholders_order": [
|
||||
"labelName"
|
||||
],
|
||||
"placeholders": {
|
||||
"labelName": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5740,4 +5740,18 @@ class AppLocalizations {
|
||||
args: [labelName],
|
||||
);
|
||||
}
|
||||
String get deleteLabel {
|
||||
return Intl.message(
|
||||
'Delete label',
|
||||
name: 'deleteLabel',
|
||||
);
|
||||
}
|
||||
|
||||
String areYouSureYouWantToDeleteTheLabel(String labelName) {
|
||||
return Intl.message(
|
||||
'Are you sure you want to delete the label "$labelName"?',
|
||||
name: 'areYouSureYouWantToDeleteTheLabel',
|
||||
args: [labelName],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user