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,
|
handleEmailAction: controller.handleEmailAction,
|
||||||
additionalActions: [],
|
additionalActions: [],
|
||||||
emailIsRead: presentationEmail.hasRead,
|
emailIsRead: presentationEmail.hasRead,
|
||||||
isLabelFeatureEnabled: controller.isLabelAvailable,
|
isLabelAvailable: controller.isLabelAvailable,
|
||||||
labels: controller.mailboxDashBoardController.labelController.labels,
|
labels: controller.mailboxDashBoardController.labelController.labels,
|
||||||
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
|
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
|
||||||
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
|
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
|
||||||
@@ -315,7 +315,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
|||||||
EmailActionType.deletePermanently,
|
EmailActionType.deletePermanently,
|
||||||
],
|
],
|
||||||
emailIsRead: presentationEmail.hasRead,
|
emailIsRead: presentationEmail.hasRead,
|
||||||
isLabelFeatureEnabled: controller.isLabelAvailable,
|
isLabelAvailable: controller.isLabelAvailable,
|
||||||
labels: controller.mailboxDashBoardController.labelController.labels,
|
labels: controller.mailboxDashBoardController.labelController.labels,
|
||||||
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
|
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
|
||||||
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
|
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
|
||||||
|
|||||||
+2
-2
@@ -488,7 +488,7 @@ class EmailActionReactor {
|
|||||||
) handleEmailAction,
|
) handleEmailAction,
|
||||||
required List<EmailActionType> additionalActions,
|
required List<EmailActionType> additionalActions,
|
||||||
required bool emailIsRead,
|
required bool emailIsRead,
|
||||||
required bool isLabelFeatureEnabled,
|
required bool isLabelAvailable,
|
||||||
required OpenBottomSheetContextMenuAction openBottomSheetContextMenu,
|
required OpenBottomSheetContextMenuAction openBottomSheetContextMenu,
|
||||||
required OpenPopupMenuActionGroup openPopupMenu,
|
required OpenPopupMenuActionGroup openPopupMenu,
|
||||||
List<Label>? labels,
|
List<Label>? labels,
|
||||||
@@ -507,7 +507,7 @@ class EmailActionReactor {
|
|||||||
if (EmailUtils.isReplyToListEnabled(presentationEmail.listPost ?? '') &&
|
if (EmailUtils.isReplyToListEnabled(presentationEmail.listPost ?? '') &&
|
||||||
additionalActions.contains(EmailActionType.replyToList))
|
additionalActions.contains(EmailActionType.replyToList))
|
||||||
EmailActionType.replyToList,
|
EmailActionType.replyToList,
|
||||||
if (isLabelFeatureEnabled)
|
if (isLabelAvailable)
|
||||||
EmailActionType.labelAs,
|
EmailActionType.labelAs,
|
||||||
if (PlatformInfo.isWeb &&
|
if (PlatformInfo.isWeb &&
|
||||||
PlatformInfo.isCanvasKit &&
|
PlatformInfo.isCanvasKit &&
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ extension HandleLabelActionTypeExtension on LabelController {
|
|||||||
if (label == null) return;
|
if (label == null) return;
|
||||||
openEditLabelModal(accountId: accountId, label: label);
|
openEditLabelModal(accountId: accountId, label: label);
|
||||||
break;
|
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';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
mixin LabelContextMenuMixin on PopupContextMenuActionMixin {
|
mixin LabelContextMenuMixin on PopupContextMenuActionMixin {
|
||||||
static const _labelActions = [LabelActionType.edit];
|
static const _labelActions = [LabelActionType.edit, LabelActionType.delete];
|
||||||
|
|
||||||
Future<void> _openLabelPopupMenuAction(
|
Future<void> _openLabelPopupMenuAction(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|||||||
|
|
||||||
enum LabelActionType {
|
enum LabelActionType {
|
||||||
create,
|
create,
|
||||||
edit;
|
edit,
|
||||||
|
delete;
|
||||||
|
|
||||||
String getContextMenuTitle(AppLocalizations appLocalizations) {
|
String getContextMenuTitle(AppLocalizations appLocalizations) {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
@@ -13,6 +14,8 @@ enum LabelActionType {
|
|||||||
return appLocalizations.create;
|
return appLocalizations.create;
|
||||||
case LabelActionType.edit:
|
case LabelActionType.edit:
|
||||||
return appLocalizations.edit;
|
return appLocalizations.edit;
|
||||||
|
case LabelActionType.delete:
|
||||||
|
return appLocalizations.delete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,15 +25,22 @@ enum LabelActionType {
|
|||||||
return appLocalizations.createANewLabel;
|
return appLocalizations.createANewLabel;
|
||||||
case LabelActionType.edit:
|
case LabelActionType.edit:
|
||||||
return appLocalizations.editLabel;
|
return appLocalizations.editLabel;
|
||||||
|
case LabelActionType.delete:
|
||||||
|
return appLocalizations.deleteLabel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String getModalSubtitle(AppLocalizations appLocalizations) {
|
String getModalSubtitle(
|
||||||
|
AppLocalizations appLocalizations, {
|
||||||
|
String labelName = '',
|
||||||
|
}) {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case LabelActionType.create:
|
case LabelActionType.create:
|
||||||
return appLocalizations.organizeYourInboxWithACustomCategory;
|
return appLocalizations.organizeYourInboxWithACustomCategory;
|
||||||
case LabelActionType.edit:
|
case LabelActionType.edit:
|
||||||
return appLocalizations.updateTheLabelName;
|
return appLocalizations.updateTheLabelName;
|
||||||
|
case LabelActionType.delete:
|
||||||
|
return appLocalizations.areYouSureYouWantToDeleteTheLabel(labelName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,15 +50,19 @@ enum LabelActionType {
|
|||||||
return appLocalizations.createLabel;
|
return appLocalizations.createLabel;
|
||||||
case LabelActionType.edit:
|
case LabelActionType.edit:
|
||||||
return appLocalizations.save;
|
return appLocalizations.save;
|
||||||
|
case LabelActionType.delete:
|
||||||
|
return '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Key getModalPositiveActionKey() {
|
Key? getModalPositiveActionKey() {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case LabelActionType.create:
|
case LabelActionType.create:
|
||||||
return const Key('create_label_button_action');
|
return const Key('create_label_button_action');
|
||||||
case LabelActionType.edit:
|
case LabelActionType.edit:
|
||||||
return const Key('save_label_button_action');
|
return const Key('save_label_button_action');
|
||||||
|
case LabelActionType.delete:
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,16 +72,44 @@ enum LabelActionType {
|
|||||||
return imagePaths.icAddNewFolder;
|
return imagePaths.icAddNewFolder;
|
||||||
case LabelActionType.edit:
|
case LabelActionType.edit:
|
||||||
return imagePaths.icRenameMailbox;
|
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() =>
|
Color getContextMenuIconColor() {
|
||||||
AppColor.gray424244.withValues(alpha: 0.72);
|
switch (this) {
|
||||||
|
case LabelActionType.delete:
|
||||||
|
return AppColor.redFF3347;
|
||||||
|
default:
|
||||||
|
return AppColor.gray424244.withValues(alpha: 0.72);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Color getContextMenuTitleColor() =>
|
Color getContextMenuTitleColor() {
|
||||||
AppColor.gray424244.withValues(alpha: 0.9);
|
switch (this) {
|
||||||
|
case LabelActionType.delete:
|
||||||
|
return AppColor.redFF3347;
|
||||||
|
default:
|
||||||
|
return AppColor.gray424244.withValues(alpha: 0.9);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5421,5 +5421,21 @@
|
|||||||
"placeholders": {
|
"placeholders": {
|
||||||
"labelName": {}
|
"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],
|
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