TF-3764 Add Create filter button in context menu
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M5 12C5 12.5185 5.42652 12.9367 5.93668 12.9367H11.0633V18.0633C11.0633 18.5735 11.4898 19 12 19C12.5102 19 12.9367 18.5735 12.9367 18.0633V12.9367H18.0633C18.5735 12.9367 19 12.5185 19 12C19 11.4898 18.5735 11.0633 18.0633 11.0633H12.9367V5.93668C12.9367 5.42652 12.5102 5 12 5C11.4898 5 11.0633 5.42652 11.0633 5.93668V11.0633H5.93668C5.42652 11.0633 5 11.4898 5 12Z" fill="#007AFF"/>
|
<path
|
||||||
|
d="M10 2.85693C10.3945 2.85693 10.7143 3.17673 10.7143 3.57122V9.28551L16.4286 9.28551C16.8231 9.28551 17.1429 9.6053 17.1429 9.99979C17.1429 10.3943 16.8231 10.7141 16.4286 10.7141L10.7143 10.7141L10.7143 16.4284C10.7143 16.8229 10.3945 17.1426 10 17.1426C9.60555 17.1426 9.28575 16.8229 9.28575 16.4284L9.28575 10.7141H3.57146C3.17697 10.7141 2.85718 10.3943 2.85718 9.99979C2.85718 9.6053 3.17697 9.28551 3.57146 9.28551H9.28575V3.57122C9.28575 3.17673 9.60555 2.85693 10 2.85693Z"
|
||||||
|
fill="#55687D" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 632 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.8246 7.21358C5.16498 8.25721 6.14611 9.01133 7.30337 9.01133C8.46063 9.01133 9.44176 8.25721 9.78214 7.21358C12.2518 7.21358 14.7214 7.21358 17.191 7.21358C17.6378 7.21358 18 6.85139 18 6.40459C18 5.9578 17.6378 5.5956 17.191 5.5956C14.7214 5.5956 12.2518 5.5956 9.78214 5.5956C9.77341 5.56831 9.7851 5.60468 9.78214 5.5956C9.44176 4.55197 8.46063 3.79785 7.30337 3.79785C6.14611 3.79785 5.16498 4.55197 4.8246 5.5956C4.15273 5.5956 3.48086 5.5956 2.80899 5.5956C2.3622 5.5956 2 5.9578 2 6.40459C2 6.85139 2.3622 7.21358 2.80899 7.21358C3.48086 7.21358 4.15273 7.21358 4.8246 7.21358ZM7.30337 5.41583C6.75729 5.41583 6.31461 5.85851 6.31461 6.40459C6.31461 6.95067 6.75729 7.39336 7.30337 7.39336C7.84945 7.39336 8.29214 6.95067 8.29214 6.40459C8.29214 5.85851 7.84945 5.41583 7.30337 5.41583Z" fill="#686E76"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 13.5956C2 13.1488 2.3622 12.7866 2.80899 12.7866C5.27861 12.7866 7.74823 12.7866 10.2179 12.7866C10.5582 11.743 11.5394 10.9889 12.6966 10.9889C13.8539 10.9889 14.835 11.743 15.1754 12.7866C15.1754 12.7866 16.7223 12.7866 17.191 12.7866C17.6378 12.7866 18 13.1488 18 13.5956C18 14.0424 17.6378 14.4046 17.191 14.4046C16.9912 14.4046 15.1754 14.4046 15.1754 14.4046C14.835 15.4482 13.8539 16.2023 12.6966 16.2023C11.5394 16.2023 10.5582 15.4482 10.2179 14.4046C7.74823 14.4046 5.27861 14.4046 2.80899 14.4046C2.3622 14.4046 2 14.0424 2 13.5956ZM11.7079 13.5956C11.7079 13.0495 12.1506 12.6068 12.6966 12.6068C13.2427 12.6068 13.6854 13.0495 13.6854 13.5956C13.6854 14.1417 13.2427 14.5844 12.6966 14.5844C12.1506 14.5844 11.7079 14.1417 11.7079 13.5956Z" fill="#686E76"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -256,7 +256,8 @@ extension AppColor on Color {
|
|||||||
static const textPrimary = Color(0xFF424244);
|
static const textPrimary = Color(0xFF424244);
|
||||||
static const iconFolder = Color(0xFF297EF2);
|
static const iconFolder = Color(0xFF297EF2);
|
||||||
static const folderDivider = Color(0xFFE4E8EC);
|
static const folderDivider = Color(0xFFE4E8EC);
|
||||||
static const color424244 = Color(0xFF424244);
|
static const gray424244 = Color(0xFF424244);
|
||||||
|
static const redFF3347 = Color(0xFFFF3347);
|
||||||
|
|
||||||
static const mapGradientColor = [
|
static const mapGradientColor = [
|
||||||
[Color(0xFF21D4FD), Color(0xFFB721FF)],
|
[Color(0xFF21D4FD), Color(0xFFB721FF)],
|
||||||
|
|||||||
@@ -230,6 +230,7 @@ class ImagePaths {
|
|||||||
String get icDoubleArrowUp => _getImagePath('ic_double_arrow_up.svg');
|
String get icDoubleArrowUp => _getImagePath('ic_double_arrow_up.svg');
|
||||||
String get icDoubleArrowDown => _getImagePath('ic_double_arrow_down.svg');
|
String get icDoubleArrowDown => _getImagePath('ic_double_arrow_down.svg');
|
||||||
String get icRefreshQuotas => _getImagePath('ic_refresh_quotas.svg');
|
String get icRefreshQuotas => _getImagePath('ic_refresh_quotas.svg');
|
||||||
|
String get icCreateFilter => _getImagePath('ic_create_filter.svg');
|
||||||
|
|
||||||
String _getImagePath(String imageName) {
|
String _getImagePath(String imageName) {
|
||||||
return AssetsPaths.images + imageName;
|
return AssetsPaths.images + imageName;
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ class ThemeUtils {
|
|||||||
letterSpacing: 0.0,
|
letterSpacing: 0.0,
|
||||||
fontSize: 24,
|
fontSize: 24,
|
||||||
height: 28.01 / 24,
|
height: 28.01 / 24,
|
||||||
color: AppColor.color424244.withOpacity(0.9),
|
color: AppColor.gray424244.withOpacity(0.9),
|
||||||
);
|
);
|
||||||
|
|
||||||
static TextStyle textStyleInter400() => TextStyle(
|
static TextStyle textStyleInter400() => TextStyle(
|
||||||
@@ -285,7 +285,7 @@ class ThemeUtils {
|
|||||||
letterSpacing: -0.15,
|
letterSpacing: -0.15,
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
height: 21.01 / 16,
|
height: 21.01 / 16,
|
||||||
color: AppColor.color424244.withOpacity(0.64),
|
color: AppColor.gray424244.withOpacity(0.64),
|
||||||
);
|
);
|
||||||
|
|
||||||
static TextSelectionThemeData get _textSelectionTheme {
|
static TextSelectionThemeData get _textSelectionTheme {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class PopupItemWidgetStyle {
|
class PopupItemWidgetStyle {
|
||||||
static const double iconSize = 24;
|
static const double iconSize = 20;
|
||||||
static const double selectedIconSize = 16;
|
static const double selectedIconSize = 16;
|
||||||
static const double space = 12;
|
static const double space = 16;
|
||||||
static const double height = 48;
|
static const double height = 48;
|
||||||
static const double minWidth = 256;
|
static const double minWidth = 256;
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class PopupItemWidget extends StatelessWidget {
|
|||||||
final String nameAction;
|
final String nameAction;
|
||||||
final Color? colorIcon;
|
final Color? colorIcon;
|
||||||
final double? iconSize;
|
final double? iconSize;
|
||||||
|
final double? iconSpace;
|
||||||
final TextStyle? styleName;
|
final TextStyle? styleName;
|
||||||
final bool? isSelected;
|
final bool? isSelected;
|
||||||
final String? selectedIcon;
|
final String? selectedIcon;
|
||||||
@@ -25,6 +26,7 @@ class PopupItemWidget extends StatelessWidget {
|
|||||||
this.styleName,
|
this.styleName,
|
||||||
this.isSelected,
|
this.isSelected,
|
||||||
this.padding,
|
this.padding,
|
||||||
|
this.iconSpace,
|
||||||
this.selectedIcon,
|
this.selectedIcon,
|
||||||
this.onCallbackAction,
|
this.onCallbackAction,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
@@ -48,7 +50,7 @@ class PopupItemWidget extends StatelessWidget {
|
|||||||
fit: BoxFit.fill,
|
fit: BoxFit.fill,
|
||||||
colorFilter: colorIcon?.asFilter()
|
colorFilter: colorIcon?.asFilter()
|
||||||
),
|
),
|
||||||
const SizedBox(width: PopupItemWidgetStyle.space),
|
SizedBox(width: iconSpace ?? PopupItemWidgetStyle.space),
|
||||||
Expanded(child: Text(
|
Expanded(child: Text(
|
||||||
nameAction,
|
nameAction,
|
||||||
style: styleName ?? PopupItemWidgetStyle.labelTextStyle
|
style: styleName ?? PopupItemWidgetStyle.labelTextStyle
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/new_ma
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.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/extensions/open_and_close_composer_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||||
import 'package:tmail_ui_user/features/push_notification/presentation/websocket/web_socket_message.dart';
|
import 'package:tmail_ui_user/features/push_notification/presentation/websocket/web_socket_message.dart';
|
||||||
@@ -1285,6 +1286,9 @@ class MailboxController extends BaseMailboxController
|
|||||||
case MailboxActions.newSubfolder:
|
case MailboxActions.newSubfolder:
|
||||||
goToCreateNewMailboxView(context, parentMailbox: mailbox);
|
goToCreateNewMailboxView(context, parentMailbox: mailbox);
|
||||||
break;
|
break;
|
||||||
|
case MailboxActions.createFilter:
|
||||||
|
mailboxDashBoardController.openCreateEmailRuleView(mailbox);
|
||||||
|
break;
|
||||||
case MailboxActions.recoverDeletedMessages:
|
case MailboxActions.recoverDeletedMessages:
|
||||||
mailboxDashBoardController.gotoEmailRecovery();
|
mailboxDashBoardController.gotoEmailRecovery();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ mixin MailboxWidgetMixin {
|
|||||||
MailboxActions.openInNewTab,
|
MailboxActions.openInNewTab,
|
||||||
if (!mailbox.isRecovered)
|
if (!mailbox.isRecovered)
|
||||||
MailboxActions.newSubfolder,
|
MailboxActions.newSubfolder,
|
||||||
|
MailboxActions.createFilter,
|
||||||
if (mailbox.isTrash)
|
if (mailbox.isTrash)
|
||||||
...[
|
...[
|
||||||
MailboxActions.emptyTrash,
|
MailboxActions.emptyTrash,
|
||||||
@@ -49,6 +50,7 @@ mixin MailboxWidgetMixin {
|
|||||||
if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox)
|
if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox)
|
||||||
MailboxActions.openInNewTab,
|
MailboxActions.openInNewTab,
|
||||||
MailboxActions.newSubfolder,
|
MailboxActions.newSubfolder,
|
||||||
|
MailboxActions.createFilter,
|
||||||
if (mailbox.countUnReadEmailsAsString.isNotEmpty)
|
if (mailbox.countUnReadEmailsAsString.isNotEmpty)
|
||||||
MailboxActions.markAsRead,
|
MailboxActions.markAsRead,
|
||||||
MailboxActions.move,
|
MailboxActions.move,
|
||||||
@@ -202,11 +204,8 @@ mixin MailboxWidgetMixin {
|
|||||||
iconAction: contextMenuItem.action.getContextMenuIcon(imagePaths),
|
iconAction: contextMenuItem.action.getContextMenuIcon(imagePaths),
|
||||||
nameAction: contextMenuItem.action.getTitleContextMenu(context),
|
nameAction: contextMenuItem.action.getTitleContextMenu(context),
|
||||||
colorIcon: contextMenuItem.action.getColorContextMenuIcon(),
|
colorIcon: contextMenuItem.action.getColorContextMenuIcon(),
|
||||||
padding: const EdgeInsetsDirectional.only(start: 12),
|
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12),
|
||||||
iconSize: 24,
|
styleName: ThemeUtils.textStyleBodyBody3(
|
||||||
styleName: TextStyle(
|
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
fontSize: 16,
|
|
||||||
color: contextMenuItem.action.getColorContextMenuTitle()
|
color: contextMenuItem.action.getColorContextMenuTitle()
|
||||||
),
|
),
|
||||||
onCallbackAction: () => handleMailboxAction(context, contextMenuItem.action, mailbox)
|
onCallbackAction: () => handleMailboxAction(context, contextMenuItem.action, mailbox)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ enum MailboxActions {
|
|||||||
emptyTrash,
|
emptyTrash,
|
||||||
emptySpam,
|
emptySpam,
|
||||||
newSubfolder,
|
newSubfolder,
|
||||||
|
createFilter,
|
||||||
confirmMailSpam,
|
confirmMailSpam,
|
||||||
recoverDeletedMessages,
|
recoverDeletedMessages,
|
||||||
allowSubaddressing,
|
allowSubaddressing,
|
||||||
@@ -55,6 +56,8 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
return AppLocalizations.of(context).copySubaddress;
|
return AppLocalizations.of(context).copySubaddress;
|
||||||
case MailboxActions.newSubfolder:
|
case MailboxActions.newSubfolder:
|
||||||
return AppLocalizations.of(context).newSubfolder;
|
return AppLocalizations.of(context).newSubfolder;
|
||||||
|
case MailboxActions.createFilter:
|
||||||
|
return AppLocalizations.of(context).createFilter;
|
||||||
case MailboxActions.disableSpamReport:
|
case MailboxActions.disableSpamReport:
|
||||||
return AppLocalizations.of(context).disableSpamReport;
|
return AppLocalizations.of(context).disableSpamReport;
|
||||||
case MailboxActions.enableSpamReport:
|
case MailboxActions.enableSpamReport:
|
||||||
@@ -96,6 +99,8 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
return imagePaths.icCopy;
|
return imagePaths.icCopy;
|
||||||
case MailboxActions.newSubfolder:
|
case MailboxActions.newSubfolder:
|
||||||
return imagePaths.icAddNewFolder;
|
return imagePaths.icAddNewFolder;
|
||||||
|
case MailboxActions.createFilter:
|
||||||
|
return imagePaths.icCreateFilter;
|
||||||
case MailboxActions.disableSpamReport:
|
case MailboxActions.disableSpamReport:
|
||||||
return imagePaths.icSpamReportDisable;
|
return imagePaths.icSpamReportDisable;
|
||||||
case MailboxActions.enableSpamReport:
|
case MailboxActions.enableSpamReport:
|
||||||
@@ -132,7 +137,7 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
Color getColorContextMenuTitle() {
|
Color getColorContextMenuTitle() {
|
||||||
switch(this) {
|
switch(this) {
|
||||||
case MailboxActions.delete:
|
case MailboxActions.delete:
|
||||||
return AppColor.colorActionDeleteConfirmDialog;
|
return AppColor.redFF3347;
|
||||||
default:
|
default:
|
||||||
return Colors.black;
|
return Colors.black;
|
||||||
}
|
}
|
||||||
@@ -141,9 +146,9 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
Color getColorContextMenuIcon() {
|
Color getColorContextMenuIcon() {
|
||||||
switch(this) {
|
switch(this) {
|
||||||
case MailboxActions.delete:
|
case MailboxActions.delete:
|
||||||
return AppColor.colorActionDeleteConfirmDialog;
|
return AppColor.redFF3347;
|
||||||
default:
|
default:
|
||||||
return AppColor.primaryColor;
|
return AppColor.steelGrayA540;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,6 +193,7 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
case MailboxActions.openInNewTab:
|
case MailboxActions.openInNewTab:
|
||||||
case MailboxActions.copySubaddress:
|
case MailboxActions.copySubaddress:
|
||||||
case MailboxActions.newSubfolder:
|
case MailboxActions.newSubfolder:
|
||||||
|
case MailboxActions.createFilter:
|
||||||
case MailboxActions.disableSpamReport:
|
case MailboxActions.disableSpamReport:
|
||||||
case MailboxActions.enableSpamReport:
|
case MailboxActions.enableSpamReport:
|
||||||
case MailboxActions.enableMailbox:
|
case MailboxActions.enableMailbox:
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ class FoldersBarWidget extends StatelessWidget {
|
|||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
iconColor: AppColor.steelGrayA540,
|
iconColor: AppColor.steelGrayA540,
|
||||||
iconSize: 20,
|
iconSize: 20,
|
||||||
|
padding: const EdgeInsets.all(5),
|
||||||
tooltipMessage: AppLocalizations.of(context).searchForFolders,
|
tooltipMessage: AppLocalizations.of(context).searchForFolders,
|
||||||
onTapActionCallback: onOpenSearchFolder,
|
onTapActionCallback: onOpenSearchFolder,
|
||||||
);
|
);
|
||||||
@@ -57,7 +58,7 @@ class FoldersBarWidget extends StatelessWidget {
|
|||||||
icon: imagePaths.icAddNewFolder,
|
icon: imagePaths.icAddNewFolder,
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
iconColor: AppColor.steelGrayA540,
|
iconColor: AppColor.steelGrayA540,
|
||||||
iconSize: 24,
|
iconSize: 20,
|
||||||
padding: const EdgeInsets.all(5),
|
padding: const EdgeInsets.all(5),
|
||||||
tooltipMessage: AppLocalizations.of(context).newFolder,
|
tooltipMessage: AppLocalizations.of(context).newFolder,
|
||||||
onTapActionCallback: onAddNewFolder,
|
onTapActionCallback: onAddNewFolder,
|
||||||
|
|||||||
+6
-4
@@ -11,8 +11,8 @@ class MailboxBottomSheetActionTileBuilder extends CupertinoActionSheetActionBuil
|
|||||||
final PresentationMailbox presentationMailbox;
|
final PresentationMailbox presentationMailbox;
|
||||||
final SvgPicture? actionSelected;
|
final SvgPicture? actionSelected;
|
||||||
final Color? bgColor;
|
final Color? bgColor;
|
||||||
final EdgeInsets? iconLeftPadding;
|
final EdgeInsetsGeometry? iconLeftPadding;
|
||||||
final EdgeInsets? iconRightPadding;
|
final EdgeInsetsGeometry? iconRightPadding;
|
||||||
final bool opacity;
|
final bool opacity;
|
||||||
final bool absorbing;
|
final bool absorbing;
|
||||||
|
|
||||||
@@ -46,8 +46,10 @@ class MailboxBottomSheetActionTileBuilder extends CupertinoActionSheetActionBuil
|
|||||||
key: key,
|
key: key,
|
||||||
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: iconLeftPadding ?? const EdgeInsets.only(left: 12, right: 16),
|
padding: iconLeftPadding ??
|
||||||
child: actionIcon),
|
const EdgeInsetsDirectional.only(start: 12, end: 16),
|
||||||
|
child: actionIcon,
|
||||||
|
),
|
||||||
Expanded(child: Text(actionName, textAlign: TextAlign.left, style: actionTextStyle())),
|
Expanded(child: Text(actionName, textAlign: TextAlign.left, style: actionTextStyle())),
|
||||||
]),
|
]),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
|
|||||||
+8
@@ -104,6 +104,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/delete_emails_in_mailbox_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/delete_emails_in_mailbox_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_clear_mailbox_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_clear_mailbox_extension.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/extensions/handle_preferences_setting_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_preferences_setting_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_save_email_as_draft_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_save_email_as_draft_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
||||||
@@ -119,9 +120,11 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||||
import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart';
|
import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart';
|
||||||
@@ -234,6 +237,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
||||||
IOSNotificationManager? _iosNotificationManager;
|
IOSNotificationManager? _iosNotificationManager;
|
||||||
GetServerSettingInteractor? getServerSettingInteractor;
|
GetServerSettingInteractor? getServerSettingInteractor;
|
||||||
|
CreateNewEmailRuleFilterInteractor? createNewEmailRuleFilterInteractor;
|
||||||
|
|
||||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
final selectedMailbox = Rxn<PresentationMailbox>();
|
final selectedMailbox = Rxn<PresentationMailbox>();
|
||||||
@@ -461,6 +465,8 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
isSenderImportantFlagEnabled.value = success.settingOption.isDisplaySenderPriority;
|
isSenderImportantFlagEnabled.value = success.settingOption.isDisplaySenderPriority;
|
||||||
} else if (success is ClearMailboxSuccess) {
|
} else if (success is ClearMailboxSuccess) {
|
||||||
clearMailboxSuccess(success);
|
clearMailboxSuccess(success);
|
||||||
|
} else if (success is CreateNewRuleFilterSuccess) {
|
||||||
|
handleCreateNewRuleFilterSuccess(success);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -499,6 +505,8 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
_handleGetAllIdentitiesFailure();
|
_handleGetAllIdentitiesFailure();
|
||||||
} else if (failure is ClearMailboxFailure) {
|
} else if (failure is ClearMailboxFailure) {
|
||||||
clearMailboxFailure(failure);
|
clearMailboxFailure(failure);
|
||||||
|
} else if (failure is CreateNewRuleFilterFailure) {
|
||||||
|
handleCreateNewRuleFilterFailure(failure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+86
@@ -0,0 +1,86 @@
|
|||||||
|
|
||||||
|
import 'package:core/utils/platform_info.dart';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
|
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/exceptions/rule_filter_exception.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
||||||
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
|
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
||||||
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
|
extension HandleCreateFilterForFolder on MailboxDashBoardController {
|
||||||
|
|
||||||
|
Future<void> openCreateEmailRuleView(
|
||||||
|
PresentationMailbox presentationMailbox,
|
||||||
|
) async {
|
||||||
|
final accountId = this.accountId.value;
|
||||||
|
final session = sessionCurrent;
|
||||||
|
|
||||||
|
if (accountId == null) {
|
||||||
|
consumeState(Stream.value(
|
||||||
|
Left(CreateNewRuleFilterFailure(NotFoundAccountIdException()))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (session == null) {
|
||||||
|
consumeState(Stream.value(
|
||||||
|
Left(CreateNewRuleFilterFailure(NotFoundSessionException()))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final arguments = RulesFilterCreatorArguments(
|
||||||
|
accountId,
|
||||||
|
session,
|
||||||
|
mailboxDestination: presentationMailbox,
|
||||||
|
);
|
||||||
|
|
||||||
|
final newRuleFilterRequest = PlatformInfo.isWeb
|
||||||
|
? await DialogRouter.pushGeneralDialog(
|
||||||
|
routeName: AppRoutes.rulesFilterCreator,
|
||||||
|
arguments: arguments,
|
||||||
|
)
|
||||||
|
: await push(
|
||||||
|
AppRoutes.rulesFilterCreator,
|
||||||
|
arguments: arguments,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (newRuleFilterRequest is CreateNewEmailRuleFilterRequest) {
|
||||||
|
_createNewRuleFilterAction(accountId, newRuleFilterRequest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _createNewRuleFilterAction(
|
||||||
|
AccountId accountId,
|
||||||
|
CreateNewEmailRuleFilterRequest ruleFilterRequest,
|
||||||
|
) {
|
||||||
|
createNewEmailRuleFilterInteractor =
|
||||||
|
getBinding<CreateNewEmailRuleFilterInteractor>();
|
||||||
|
|
||||||
|
if (createNewEmailRuleFilterInteractor == null) {
|
||||||
|
consumeState(Stream.value(
|
||||||
|
Left(CreateNewRuleFilterFailure(RuleFilterNotBindingException()))));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
consumeState(createNewEmailRuleFilterInteractor!.execute(
|
||||||
|
accountId,
|
||||||
|
ruleFilterRequest,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleCreateNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
||||||
|
if (success.newListRules.isNotEmpty == true) {
|
||||||
|
toastManager.showMessageSuccess(success);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleCreateNewRuleFilterFailure(CreateNewRuleFilterFailure failure) {
|
||||||
|
toastManager.showMessageFailure(failure);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
class RuleFilterNotBindingException implements Exception {}
|
||||||
@@ -34,14 +34,10 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart';
|
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
|
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/network_connection/presentation/network_connection_controller.dart'
|
import 'package:tmail_ui_user/features/network_connection/presentation/network_connection_controller.dart'
|
||||||
if (dart.library.html) 'package:tmail_ui_user/features/network_connection/presentation/web_network_connection_controller.dart';
|
if (dart.library.html) 'package:tmail_ui_user/features/network_connection/presentation/web_network_connection_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/push_notification/presentation/websocket/web_socket_message.dart';
|
import 'package:tmail_ui_user/features/push_notification/presentation/websocket/web_socket_message.dart';
|
||||||
import 'package:tmail_ui_user/features/push_notification/presentation/websocket/web_socket_queue_handler.dart';
|
import 'package:tmail_ui_user/features/push_notification/presentation/websocket/web_socket_queue_handler.dart';
|
||||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
|
||||||
import 'package:tmail_ui_user/features/search/email/presentation/search_email_bindings.dart';
|
import 'package:tmail_ui_user/features/search/email/presentation/search_email_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
|
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
|
||||||
@@ -70,9 +66,7 @@ import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_t
|
|||||||
import 'package:tmail_ui_user/features/thread/presentation/model/loading_more_status.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/model/loading_more_status.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
|
||||||
import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
|
import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|
||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
|
||||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||||
@@ -93,8 +87,6 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
final GetEmailByIdInteractor _getEmailByIdInteractor;
|
final GetEmailByIdInteractor _getEmailByIdInteractor;
|
||||||
final CleanAndGetEmailsInMailboxInteractor cleanAndGetEmailsInMailboxInteractor;
|
final CleanAndGetEmailsInMailboxInteractor cleanAndGetEmailsInMailboxInteractor;
|
||||||
|
|
||||||
CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
|
|
||||||
|
|
||||||
final listEmailDrag = <PresentationEmail>[].obs;
|
final listEmailDrag = <PresentationEmail>[].obs;
|
||||||
bool _rangeSelectionMode = false;
|
bool _rangeSelectionMode = false;
|
||||||
final openingEmail = RxBool(false);
|
final openingEmail = RxBool(false);
|
||||||
@@ -195,8 +187,6 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
_openEmailWithoutMailboxFromLocationBar(success.email);
|
_openEmailWithoutMailboxFromLocationBar(success.email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (success is CreateNewRuleFilterSuccess) {
|
|
||||||
_createNewRuleFilterSuccess(success);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1384,47 +1374,6 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
mailboxDashBoardController.onDragMailbox(isDrag);
|
mailboxDashBoardController.onDragMailbox(isDrag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void goToCreateEmailRuleView() async {
|
|
||||||
if (_accountId != null && _session != null) {
|
|
||||||
final arguments = RulesFilterCreatorArguments(
|
|
||||||
_accountId!,
|
|
||||||
_session!,
|
|
||||||
mailboxDestination: selectedMailbox
|
|
||||||
);
|
|
||||||
|
|
||||||
final newRuleFilterRequest = PlatformInfo.isWeb
|
|
||||||
? await DialogRouter.pushGeneralDialog(routeName: AppRoutes.rulesFilterCreator, arguments: arguments)
|
|
||||||
: await push(AppRoutes.rulesFilterCreator, arguments: arguments);
|
|
||||||
|
|
||||||
if (newRuleFilterRequest is CreateNewEmailRuleFilterRequest) {
|
|
||||||
_createNewRuleFilterAction(_accountId!, newRuleFilterRequest);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logError('ThreadController::goToCreateEmailRuleView: Account or Session is NULL');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void _createNewRuleFilterAction(
|
|
||||||
AccountId accountId,
|
|
||||||
CreateNewEmailRuleFilterRequest ruleFilterRequest
|
|
||||||
) async {
|
|
||||||
_createNewEmailRuleFilterInteractor = getBinding<CreateNewEmailRuleFilterInteractor>();
|
|
||||||
if (_createNewEmailRuleFilterInteractor != null) {
|
|
||||||
consumeState(_createNewEmailRuleFilterInteractor!.execute(accountId, ruleFilterRequest));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
|
||||||
if (success.newListRules.isNotEmpty == true &&
|
|
||||||
currentOverlayContext != null &&
|
|
||||||
currentContext != null) {
|
|
||||||
appToast.showToastSuccessMessage(
|
|
||||||
currentOverlayContext!,
|
|
||||||
AppLocalizations.of(currentContext!).newFilterWasCreated
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<bool> swipeEmailAction(BuildContext context, PresentationEmail email, DismissDirection direction) async {
|
Future<bool> swipeEmailAction(BuildContext context, PresentationEmail email, DismissDirection direction) async {
|
||||||
if (direction == DismissDirection.startToEnd) {
|
if (direction == DismissDirection.startToEnd) {
|
||||||
ReadActions readActions = !email.hasRead ? ReadActions.markAsRead : ReadActions.markAsUnread;
|
ReadActions readActions = !email.hasRead ? ReadActions.markAsRead : ReadActions.markAsUnread;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"@@last_modified": "2025-06-02T16:27:17.653715",
|
"@@last_modified": "2025-06-02T18:48:11.159281",
|
||||||
"initializing_data": "Initializing data...",
|
"initializing_data": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
@@ -4528,7 +4528,7 @@
|
|||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"youDoNotHaveAnyEmailInYourCurrentFolder": "You don’t have any emails in this folder.",
|
"youDoNotHaveAnyEmailInYourCurrentFolder": "You don’t have any emails\n in this folder.",
|
||||||
"@youDoNotHaveAnyEmailInYourCurrentFolder": {
|
"@youDoNotHaveAnyEmailInYourCurrentFolder": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
@@ -4539,5 +4539,17 @@
|
|||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"createFilter": "Create filter",
|
||||||
|
"@createFilter": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"createFilterRuleFailed": "Create filter rule failed",
|
||||||
|
"@createFilterRuleFailed": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4780,4 +4780,18 @@ class AppLocalizations {
|
|||||||
name: 'startToComposeEmails',
|
name: 'startToComposeEmails',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String get createFilter {
|
||||||
|
return Intl.message(
|
||||||
|
'Create filter',
|
||||||
|
name: 'createFilter',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String get createFilterRuleFailed {
|
||||||
|
return Intl.message(
|
||||||
|
'Create filter rule failed',
|
||||||
|
name: 'createFilterRuleFailed',
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/state/clear_mailbox_state.
|
|||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/add_recipient_in_forwarding_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/add_recipient_in_forwarding_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/delete_recipient_in_forwarding_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/delete_recipient_in_forwarding_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/export_trace_log_state.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/state/export_trace_log_state.dart';
|
||||||
import 'package:tmail_ui_user/features/starting_page/domain/state/sign_in_twake_workplace_state.dart';
|
import 'package:tmail_ui_user/features/starting_page/domain/state/sign_in_twake_workplace_state.dart';
|
||||||
import 'package:tmail_ui_user/features/starting_page/domain/state/sign_up_twake_workplace_state.dart';
|
import 'package:tmail_ui_user/features/starting_page/domain/state/sign_up_twake_workplace_state.dart';
|
||||||
@@ -198,6 +199,8 @@ class ToastManager {
|
|||||||
} else {
|
} else {
|
||||||
message = AppLocalizations.of(currentContext!).deleteRecipientsFailed;
|
message = AppLocalizations.of(currentContext!).deleteRecipientsFailed;
|
||||||
}
|
}
|
||||||
|
} else if (failure is CreateNewRuleFilterFailure) {
|
||||||
|
message = AppLocalizations.of(currentContext!).createFilterRuleFailed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message?.isNotEmpty == true) {
|
if (message?.isNotEmpty == true) {
|
||||||
@@ -219,6 +222,8 @@ class ToastManager {
|
|||||||
message = AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success;
|
message = AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success;
|
||||||
} else if (success is ExportTraceLogSuccess) {
|
} else if (success is ExportTraceLogSuccess) {
|
||||||
message = AppLocalizations.of(currentContext!).exportTraceLogSuccess(success.savePath);
|
message = AppLocalizations.of(currentContext!).exportTraceLogSuccess(success.savePath);
|
||||||
|
} else if (success is CreateNewRuleFilterSuccess) {
|
||||||
|
message = AppLocalizations.of(currentContext!).newFilterWasCreated;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message?.isNotEmpty == true) {
|
if (message?.isNotEmpty == true) {
|
||||||
|
|||||||
Reference in New Issue
Block a user