TF-4358 Remove mail in trash by default in search result (#4361)
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
<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="M1.42859 9.71429C1.42859 7.31407 1.42859 6.11395 1.8957 5.19719C2.30659 4.39078 2.96222 3.73515 3.76863 3.32426C4.68539 2.85715 5.88551 2.85715 8.28573 2.85715H11.7143C14.1145 2.85715 15.3146 2.85715 16.2314 3.32426C17.0378 3.73515 17.6934 4.39078 18.1043 5.19719C18.5714 6.11395 18.5714 7.31407 18.5714 9.71429V10.2857C18.5714 12.6859 18.5714 13.8861 18.1043 14.8028C17.6934 15.6092 17.0378 16.2649 16.2314 16.6757C15.3146 17.1429 14.1145 17.1429 11.7143 17.1429H8.28573C5.88551 17.1429 4.68539 17.1429 3.76863 16.6757C2.96222 16.2649 2.30659 15.6092 1.8957 14.8028C1.42859 13.8861 1.42859 12.6859 1.42859 10.2857V9.71429ZM8.28573 4.28572H11.7143C12.938 4.28572 13.7698 4.28683 14.4128 4.33936C15.0391 4.39053 15.3594 4.48329 15.5828 4.59713C15.6351 4.62377 15.6865 4.65196 15.7368 4.68163L11.9193 8.49913C11.4867 8.93177 11.1922 9.22548 10.9463 9.43424C10.7067 9.63758 10.5607 9.71803 10.4415 9.75677C10.1546 9.85 9.84548 9.85 9.55856 9.75677C9.43932 9.71803 9.29329 9.63758 9.05376 9.43424C8.80786 9.22548 8.51337 8.93177 8.08073 8.49913L4.26323 4.68163C4.31356 4.65196 4.3649 4.62377 4.41719 4.59713C4.64062 4.48329 4.96091 4.39053 5.58721 4.33936C6.2302 4.28683 7.06205 4.28572 8.28573 4.28572ZM3.25307 5.69178C3.2234 5.74212 3.19521 5.79346 3.16857 5.84575C3.05473 6.06917 2.96198 6.38947 2.91081 7.01577C2.85827 7.65876 2.85716 8.4906 2.85716 9.71429V10.2857C2.85716 11.5094 2.85827 12.3413 2.91081 12.9842C2.96198 13.6105 3.05473 13.9308 3.16857 14.1543C3.44249 14.6919 3.87958 15.129 4.41719 15.4029C4.64062 15.5167 4.96091 15.6095 5.58721 15.6606C6.2302 15.7132 7.06205 15.7143 8.28573 15.7143H11.7143C12.938 15.7143 13.7698 15.7132 14.4128 15.6606C15.0391 15.6095 15.3594 15.5167 15.5828 15.4029C16.1205 15.129 16.5575 14.6919 16.8315 14.1543C16.9453 13.9308 17.0381 13.6105 17.0892 12.9842C17.1418 12.3413 17.1429 11.5094 17.1429 10.2857V9.71429C17.1429 8.4906 17.1418 7.65876 17.0892 7.01577C17.0381 6.38947 16.9453 6.06917 16.8315 5.84575C16.8048 5.79346 16.7766 5.74212 16.747 5.69178L12.9086 9.53014C12.5021 9.9367 12.1665 10.2723 11.8708 10.5233C11.5637 10.784 11.253 10.9952 10.8829 11.1154C10.3091 11.3019 9.69095 11.3019 9.11711 11.1154C8.74708 10.9952 8.43632 10.784 8.12922 10.5233C7.83355 10.2723 7.498 9.93672 7.09143 9.53014L3.25307 5.69178Z"
|
||||||
|
fill="#007AFF" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.4 KiB |
@@ -281,6 +281,7 @@ class ImagePaths {
|
|||||||
String get icLabel => _getImagePath('ic_label.svg');
|
String get icLabel => _getImagePath('ic_label.svg');
|
||||||
String get icColorPicker => _getImagePath('ic_color_picker.svg');
|
String get icColorPicker => _getImagePath('ic_color_picker.svg');
|
||||||
String get icThumbsUp => _getImagePath('ic_thumbs_up.svg');
|
String get icThumbsUp => _getImagePath('ic_thumbs_up.svg');
|
||||||
|
String get icAllEmail => _getImagePath('ic_all_email.svg');
|
||||||
|
|
||||||
String _getImagePath(String imageName) {
|
String _getImagePath(String imageName) {
|
||||||
return AssetsPaths.images + imageName;
|
return AssetsPaths.images + imageName;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ enum FilterField {
|
|||||||
case FilterField.notKeyword:
|
case FilterField.notKeyword:
|
||||||
return appLocalizations.doesNotHave;
|
return appLocalizations.doesNotHave;
|
||||||
case FilterField.mailBox:
|
case FilterField.mailBox:
|
||||||
return appLocalizations.folder;
|
return appLocalizations.search;
|
||||||
case FilterField.date:
|
case FilterField.date:
|
||||||
return appLocalizations.date;
|
return appLocalizations.date;
|
||||||
case FilterField.sortBy:
|
case FilterField.sortBy:
|
||||||
|
|||||||
@@ -332,7 +332,8 @@ class DestinationPickerController extends BaseMailboxController {
|
|||||||
}
|
}
|
||||||
mailboxDestination.value = presentationMailbox;
|
mailboxDestination.value = presentationMailbox;
|
||||||
if (presentationMailbox == null ||
|
if (presentationMailbox == null ||
|
||||||
presentationMailbox.id == PresentationMailbox.unifiedMailbox.id) {
|
presentationMailbox.id == PresentationMailbox.unifiedMailbox.id ||
|
||||||
|
presentationMailbox.id == PresentationMailbox.allEmailTrashAndSpamFolder.id) {
|
||||||
unAllSelectedMailboxNode();
|
unAllSelectedMailboxNode();
|
||||||
} else {
|
} else {
|
||||||
if (mailboxNode != null) {
|
if (mailboxNode != null) {
|
||||||
|
|||||||
@@ -21,15 +21,15 @@ import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
|||||||
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
|
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_controller.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_screen_type.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_screen_type.dart';
|
||||||
|
import 'package:tmail_ui_user/features/destination_picker/presentation/widgets/destination_picker_folder_item.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/widgets/top_bar_destination_picker_builder.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/widgets/top_bar_destination_picker_builder.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displayed.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displayed.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_icon_widget_styles.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_category_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_category_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/widgets/create_mailbox_name_input_decoration_builder.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/widgets/create_mailbox_name_input_decoration_builder.dart';
|
||||||
@@ -272,16 +272,28 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
actions,
|
actions,
|
||||||
mailboxIdSelected)
|
mailboxIdSelected)
|
||||||
: const SizedBox.shrink()),
|
: const SizedBox.shrink()),
|
||||||
|
if (actions == MailboxActions.select)
|
||||||
|
...[
|
||||||
|
const Padding(
|
||||||
|
padding: EdgeInsetsDirectional.only(start: 16, end: 16, bottom: 8),
|
||||||
|
child: Divider(color: AppColor.colorDividerMailbox, height: 1),
|
||||||
|
),
|
||||||
|
_buildAllEmailTrashAndSpamFolderWidget(context, mailboxIdSelected),
|
||||||
|
const Padding(
|
||||||
|
padding: EdgeInsetsDirectional.symmetric(horizontal: 16, vertical: 8),
|
||||||
|
child: Divider(color: AppColor.colorDividerMailbox, height: 1),
|
||||||
|
),
|
||||||
|
],
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.personalMailboxIsNotEmpty) {
|
if (controller.personalMailboxIsNotEmpty) {
|
||||||
return Column(
|
return Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
const Divider(
|
if (actions != MailboxActions.select)
|
||||||
color: AppColor.colorDividerMailbox,
|
const Padding(
|
||||||
height: 1,
|
padding: EdgeInsetsDirectional.only(bottom: 8),
|
||||||
),
|
child: Divider(color: AppColor.colorDividerMailbox, height: 1),
|
||||||
const SizedBox(height: 8),
|
),
|
||||||
_buildMailboxCategory(
|
_buildMailboxCategory(
|
||||||
context,
|
context,
|
||||||
MailboxCategories.personalFolders,
|
MailboxCategories.personalFolders,
|
||||||
@@ -494,81 +506,56 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
|
|||||||
MailboxActions? actions,
|
MailboxActions? actions,
|
||||||
MailboxId? mailboxIdSelected
|
MailboxId? mailboxIdSelected
|
||||||
) {
|
) {
|
||||||
return Padding(
|
final appLocalizations = AppLocalizations.of(context);
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
final folderName = actions == MailboxActions.select
|
||||||
child: Material(
|
? appLocalizations.allEmail
|
||||||
color: Colors.transparent,
|
: appLocalizations.allFolders;
|
||||||
child: InkWell(
|
final folderIcon = actions == MailboxActions.select
|
||||||
onTap: () {
|
? controller.imagePaths.icAllEmail
|
||||||
if (mailboxIdSelected != null
|
: controller.imagePaths.icFolderMailbox;
|
||||||
&& mailboxIdSelected != PresentationMailbox.unifiedMailbox.id
|
final isAllEmailIdSelected = mailboxIdSelected == null ||
|
||||||
) {
|
mailboxIdSelected == PresentationMailbox.unifiedMailbox.id;
|
||||||
controller.selectMailboxAction(PresentationMailbox.unifiedMailbox);
|
final isDesktop = controller.responsiveUtils.isDesktop(context);
|
||||||
controller.dispatchSelectMailboxDestination(context);
|
return Obx(() {
|
||||||
}
|
final isSelected = controller.mailboxDestination.value?.isAllEmail == true || isAllEmailIdSelected;
|
||||||
},
|
return DestinationPickerFolderItem(
|
||||||
customBorder: RoundedRectangleBorder(
|
text: folderName,
|
||||||
borderRadius: BorderRadius.all(Radius.circular(
|
folderIcon: folderIcon,
|
||||||
PlatformInfo.isWeb
|
selectedIcon: controller.imagePaths.icSelectedSB,
|
||||||
? MailboxItemWidgetStyles.borderRadius
|
isDesktop: isDesktop,
|
||||||
: MailboxItemWidgetStyles.mobileBorderRadius,
|
isSelected: isSelected,
|
||||||
)),
|
margin: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
),
|
onTap: () {
|
||||||
hoverColor: AppColor.colorMailboxHovered,
|
if (!isSelected) {
|
||||||
child: Obx(() => Container(
|
controller.selectMailboxAction(PresentationMailbox.unifiedMailbox);
|
||||||
padding: const EdgeInsetsDirectional.symmetric(
|
controller.dispatchSelectMailboxDestination(context);
|
||||||
horizontal: MailboxItemWidgetStyles.itemPadding,
|
}
|
||||||
),
|
},
|
||||||
color: controller.mailboxDestination.value == PresentationMailbox.unifiedMailbox
|
);
|
||||||
? AppColor.colorItemSelected
|
});
|
||||||
: Colors.transparent,
|
|
||||||
height: PlatformInfo.isWeb
|
|
||||||
? MailboxItemWidgetStyles.height
|
|
||||||
: MailboxItemWidgetStyles.mobileHeight,
|
|
||||||
child: Row(children: [
|
|
||||||
SvgPicture.asset(
|
|
||||||
controller.imagePaths.icFolderMailbox,
|
|
||||||
width: MailboxIconWidgetStyles.iconSize,
|
|
||||||
height: MailboxIconWidgetStyles.iconSize,
|
|
||||||
fit: BoxFit.fill
|
|
||||||
),
|
|
||||||
const SizedBox(
|
|
||||||
width: MailboxItemWidgetStyles.labelIconSpace,
|
|
||||||
),
|
|
||||||
Expanded(child: Text(
|
|
||||||
AppLocalizations.of(context).allFolders,
|
|
||||||
maxLines: 1,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
style: ThemeUtils.textStyleInter500(),
|
|
||||||
)),
|
|
||||||
const SizedBox(
|
|
||||||
width: MailboxItemWidgetStyles.labelIconSpace,
|
|
||||||
),
|
|
||||||
if (_validateDisplaySelectedIcon(
|
|
||||||
actions: actions,
|
|
||||||
mailboxIdSelected: mailboxIdSelected
|
|
||||||
))
|
|
||||||
SvgPicture.asset(
|
|
||||||
actions == MailboxActions.create
|
|
||||||
? controller.imagePaths.icSelectedSB
|
|
||||||
: controller.imagePaths.icFilterSelected,
|
|
||||||
width: MailboxIconWidgetStyles.iconSize,
|
|
||||||
height: MailboxIconWidgetStyles.iconSize,
|
|
||||||
fit: BoxFit.fill
|
|
||||||
)
|
|
||||||
])
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _validateDisplaySelectedIcon({
|
Widget _buildAllEmailTrashAndSpamFolderWidget(BuildContext context, MailboxId? mailboxIdSelected) {
|
||||||
MailboxActions? actions,
|
final isMailboxIdSelected = mailboxIdSelected == PresentationMailbox.allEmailTrashAndSpamFolder.id;
|
||||||
MailboxId? mailboxIdSelected
|
final isDesktop = controller.responsiveUtils.isDesktop(context);
|
||||||
}) {
|
final folderName = AppLocalizations.of(context).allEmailTrashAndSpam;
|
||||||
return (actions == MailboxActions.select || actions == MailboxActions.create)
|
return Obx(() {
|
||||||
&& (mailboxIdSelected == null || mailboxIdSelected == PresentationMailbox.unifiedMailbox.id);
|
final isSelected = controller.mailboxDestination.value?.isAllEmailTrashAndSpamFolder == true || isMailboxIdSelected;
|
||||||
|
return DestinationPickerFolderItem(
|
||||||
|
text: folderName,
|
||||||
|
folderIcon: controller.imagePaths.icMoveFolderContent,
|
||||||
|
selectedIcon: controller.imagePaths.icSelectedSB,
|
||||||
|
isSelected: isSelected,
|
||||||
|
isDesktop: isDesktop,
|
||||||
|
margin: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
|
onTap: () {
|
||||||
|
if (!isSelected) {
|
||||||
|
controller.selectMailboxAction(PresentationMailbox.allEmailTrashAndSpamFolder);
|
||||||
|
controller.dispatchSelectMailboxDestination(context);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void _handleOpenMailboxNodeClick(MailboxNode mailboxNode) {
|
void _handleOpenMailboxNodeClick(MailboxNode mailboxNode) {
|
||||||
|
|||||||
+104
@@ -0,0 +1,104 @@
|
|||||||
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
|
import 'package:core/presentation/utils/theme_utils.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_icon_widget_styles.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart';
|
||||||
|
|
||||||
|
class DestinationPickerFolderItem extends StatelessWidget {
|
||||||
|
final bool isSelected;
|
||||||
|
final bool isDesktop;
|
||||||
|
final String text;
|
||||||
|
final String folderIcon;
|
||||||
|
final String selectedIcon;
|
||||||
|
final EdgeInsetsGeometry? margin;
|
||||||
|
final VoidCallback onTap;
|
||||||
|
|
||||||
|
const DestinationPickerFolderItem({
|
||||||
|
super.key,
|
||||||
|
required this.isSelected,
|
||||||
|
required this.isDesktop,
|
||||||
|
required this.text,
|
||||||
|
required this.folderIcon,
|
||||||
|
required this.selectedIcon,
|
||||||
|
required this.onTap,
|
||||||
|
this.margin,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final folderIconWidget = SvgPicture.asset(
|
||||||
|
folderIcon,
|
||||||
|
width: MailboxIconWidgetStyles.iconSize,
|
||||||
|
height: MailboxIconWidgetStyles.iconSize,
|
||||||
|
colorFilter: AppColor.primaryLinShare.asFilter(),
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
);
|
||||||
|
|
||||||
|
final displayNameWidget = Text(
|
||||||
|
text,
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: _displayNameTextStyle,
|
||||||
|
);
|
||||||
|
|
||||||
|
final selectedIconWidget = SvgPicture.asset(
|
||||||
|
selectedIcon,
|
||||||
|
width: MailboxIconWidgetStyles.iconSize,
|
||||||
|
height: MailboxIconWidgetStyles.iconSize,
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
);
|
||||||
|
|
||||||
|
final itemHeight = isDesktop
|
||||||
|
? MailboxItemWidgetStyles.height
|
||||||
|
: MailboxItemWidgetStyles.mobileHeight;
|
||||||
|
|
||||||
|
final borderRadius = BorderRadius.all(Radius.circular(
|
||||||
|
isDesktop
|
||||||
|
? MailboxItemWidgetStyles.borderRadius
|
||||||
|
: MailboxItemWidgetStyles.mobileBorderRadius,
|
||||||
|
));
|
||||||
|
|
||||||
|
Widget itemWidget = Material(
|
||||||
|
type: MaterialType.transparency,
|
||||||
|
child: InkWell(
|
||||||
|
onTap: onTap,
|
||||||
|
customBorder: RoundedRectangleBorder(borderRadius: borderRadius),
|
||||||
|
hoverColor: AppColor.colorMailboxHovered,
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsetsDirectional.symmetric(
|
||||||
|
horizontal: MailboxItemWidgetStyles.itemPadding,
|
||||||
|
),
|
||||||
|
height: itemHeight,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
folderIconWidget,
|
||||||
|
const SizedBox(width: MailboxItemWidgetStyles.labelIconSpace),
|
||||||
|
Expanded(child: displayNameWidget),
|
||||||
|
if (isSelected) ...[
|
||||||
|
const SizedBox(width: MailboxItemWidgetStyles.labelIconSpace),
|
||||||
|
selectedIconWidget,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
if (margin != null) {
|
||||||
|
itemWidget = Padding(padding: margin!, child: itemWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
return itemWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
TextStyle get _displayNameTextStyle {
|
||||||
|
if (isSelected) {
|
||||||
|
return ThemeUtils.textStyleInter700(fontSize: 14);
|
||||||
|
} else {
|
||||||
|
return isDesktop
|
||||||
|
? ThemeUtils.textStyleBodyBody3(color: Colors.black)
|
||||||
|
: ThemeUtils.textStyleInter500();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -172,4 +172,20 @@ extension PresentationMailboxExtension on PresentationMailbox {
|
|||||||
isLabelMailbox ? (this as PresentationLabelMailbox).label.id : null;
|
isLabelMailbox ? (this as PresentationLabelMailbox).label.id : null;
|
||||||
|
|
||||||
MailboxId? get browserRouteMailboxId => isLabelMailbox ? null : mailboxId;
|
MailboxId? get browserRouteMailboxId => isLabelMailbox ? null : mailboxId;
|
||||||
|
|
||||||
|
bool get isAllEmailTrashAndSpamFolder => id == PresentationMailbox.allEmailTrashAndSpamFolder.id;
|
||||||
|
|
||||||
|
bool get isAllEmail => id == PresentationMailbox.unifiedMailbox.id;
|
||||||
|
|
||||||
|
bool get isUnifiedMailbox => isAllEmail || isAllEmailTrashAndSpamFolder;
|
||||||
|
|
||||||
|
String getFolderNameForQuickSearch(AppLocalizations appLocalizations) {
|
||||||
|
if (isAllEmailTrashAndSpamFolder) {
|
||||||
|
return appLocalizations.allEmailTrashAndSpam;
|
||||||
|
} else if (isAllEmail) {
|
||||||
|
return appLocalizations.allEmail;
|
||||||
|
} else {
|
||||||
|
return getDisplayNameWithoutContext(appLocalizations);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+8
-24
@@ -13,7 +13,6 @@ import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_st
|
|||||||
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart';
|
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/model/draggable_email_address.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/model/draggable_email_address.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
|
||||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.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/input_field_focus_manager.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/input_field_focus_manager.dart';
|
||||||
@@ -25,7 +24,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear
|
|||||||
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/presentation/extensions/datetime_extension.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.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/dialog_router.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
@@ -41,7 +39,7 @@ class AdvancedFilterController extends BaseController {
|
|||||||
final startDate = Rxn<DateTime>();
|
final startDate = Rxn<DateTime>();
|
||||||
final endDate = Rxn<DateTime>();
|
final endDate = Rxn<DateTime>();
|
||||||
final sortOrderType = SearchEmailFilter.defaultSortOrder.obs;
|
final sortOrderType = SearchEmailFilter.defaultSortOrder.obs;
|
||||||
final selectedFolderName = Rxn<String>();
|
final destinationMailboxSelected = Rxn<PresentationMailbox>();
|
||||||
final selectedLabel = Rxn<Label>();
|
final selectedLabel = Rxn<Label>();
|
||||||
|
|
||||||
final GlobalKey<TagsEditorState> keyFromEmailTagEditor = GlobalKey<TagsEditorState>();
|
final GlobalKey<TagsEditorState> keyFromEmailTagEditor = GlobalKey<TagsEditorState>();
|
||||||
@@ -64,8 +62,6 @@ class AdvancedFilterController extends BaseController {
|
|||||||
final focusManager = InputFieldFocusManager.initial();
|
final focusManager = InputFieldFocusManager.initial();
|
||||||
late SearchEmailFilter _memorySearchFilter;
|
late SearchEmailFilter _memorySearchFilter;
|
||||||
|
|
||||||
PresentationMailbox? _destinationMailboxSelected;
|
|
||||||
|
|
||||||
late Worker _dashboardActionWorker;
|
late Worker _dashboardActionWorker;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -103,7 +99,7 @@ class AdvancedFilterController extends BaseController {
|
|||||||
|
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
void setDestinationMailboxSelected(PresentationMailbox? presentationMailbox) {
|
void setDestinationMailboxSelected(PresentationMailbox? presentationMailbox) {
|
||||||
_destinationMailboxSelected = presentationMailbox;
|
destinationMailboxSelected.value = presentationMailbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
@@ -173,7 +169,7 @@ class AdvancedFilterController extends BaseController {
|
|||||||
|
|
||||||
final sortOrderTypeOption = Some(sortOrderType.value);
|
final sortOrderTypeOption = Some(sortOrderType.value);
|
||||||
|
|
||||||
final mailboxOption = optionOf(_destinationMailboxSelected);
|
final mailboxOption = optionOf(destinationMailboxSelected.value);
|
||||||
|
|
||||||
final subjectOption = option(
|
final subjectOption = option(
|
||||||
subjectFilterInputController.text.trim().isNotEmpty,
|
subjectFilterInputController.text.trim().isNotEmpty,
|
||||||
@@ -228,7 +224,7 @@ class AdvancedFilterController extends BaseController {
|
|||||||
accountId,
|
accountId,
|
||||||
MailboxActions.select,
|
MailboxActions.select,
|
||||||
session,
|
session,
|
||||||
mailboxIdSelected: _destinationMailboxSelected?.id
|
mailboxIdSelected: destinationMailboxSelected.value?.id
|
||||||
);
|
);
|
||||||
|
|
||||||
final destinationMailbox = PlatformInfo.isWeb
|
final destinationMailbox = PlatformInfo.isWeb
|
||||||
@@ -239,12 +235,8 @@ class AdvancedFilterController extends BaseController {
|
|||||||
|
|
||||||
if (destinationMailbox is! PresentationMailbox) return;
|
if (destinationMailbox is! PresentationMailbox) return;
|
||||||
|
|
||||||
_destinationMailboxSelected = destinationMailbox;
|
destinationMailboxSelected.value = destinationMailbox;
|
||||||
final mailboxName = context.mounted
|
_updateMemorySearchFilter(mailboxOption: optionOf(destinationMailbox));
|
||||||
? _destinationMailboxSelected?.getDisplayName(context)
|
|
||||||
: _destinationMailboxSelected?.name?.name;
|
|
||||||
selectedFolderName.value = StringConvert.writeNullToEmpty(mailboxName);
|
|
||||||
_updateMemorySearchFilter(mailboxOption: optionOf(_destinationMailboxSelected));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void applyAdvancedSearchFilter() {
|
void applyAdvancedSearchFilter() {
|
||||||
@@ -290,7 +282,7 @@ class AdvancedFilterController extends BaseController {
|
|||||||
|
|
||||||
sortOrderType.value = _memorySearchFilter.sortOrderType;
|
sortOrderType.value = _memorySearchFilter.sortOrderType;
|
||||||
|
|
||||||
_destinationMailboxSelected = _memorySearchFilter.mailbox;
|
destinationMailboxSelected.value = _memorySearchFilter.mailbox;
|
||||||
|
|
||||||
hasAttachment.value = _memorySearchFilter.hasAttachment;
|
hasAttachment.value = _memorySearchFilter.hasAttachment;
|
||||||
|
|
||||||
@@ -320,13 +312,6 @@ class AdvancedFilterController extends BaseController {
|
|||||||
toAddressExpandMode.value = ExpandMode.COLLAPSE;
|
toAddressExpandMode.value = ExpandMode.COLLAPSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (context != null) {
|
|
||||||
selectedFolderName.value = _memorySearchFilter.mailbox == null
|
|
||||||
? AppLocalizations.of(context).allFolders
|
|
||||||
: StringConvert.writeNullToEmpty(
|
|
||||||
_memorySearchFilter.mailbox?.getDisplayName(context));
|
|
||||||
}
|
|
||||||
|
|
||||||
selectedLabel.value = _memorySearchFilter.label;
|
selectedLabel.value = _memorySearchFilter.label;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -493,10 +478,9 @@ class AdvancedFilterController extends BaseController {
|
|||||||
isUnread.value = false;
|
isUnread.value = false;
|
||||||
isStarred.value = false;
|
isStarred.value = false;
|
||||||
hasEvents.value = false;
|
hasEvents.value = false;
|
||||||
selectedFolderName.value = null;
|
destinationMailboxSelected.value = null;
|
||||||
listFromEmailAddress.clear();
|
listFromEmailAddress.clear();
|
||||||
listToEmailAddress.clear();
|
listToEmailAddress.clear();
|
||||||
_destinationMailboxSelected = null;
|
|
||||||
selectedLabel.value = null;
|
selectedLabel.value = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-6
@@ -976,6 +976,14 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
?? mapDefaultMailboxIdByRole[PresentationMailbox.roleSpam];
|
?? mapDefaultMailboxIdByRole[PresentationMailbox.roleSpam];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set<MailboxId>? get trashSpamMailboxIds {
|
||||||
|
final ids = mapMailboxById.entries
|
||||||
|
.where((entry) => entry.value.isTrash || entry.value.isSpam)
|
||||||
|
.map((entry) => entry.key)
|
||||||
|
.toSet();
|
||||||
|
return ids.isEmpty ? null : ids;
|
||||||
|
}
|
||||||
|
|
||||||
void setMapDefaultMailboxIdByRole(Map<Role, MailboxId> newMapMailboxId) {
|
void setMapDefaultMailboxIdByRole(Map<Role, MailboxId> newMapMailboxId) {
|
||||||
mapDefaultMailboxIdByRole = newMapMailboxId;
|
mapDefaultMailboxIdByRole = newMapMailboxId;
|
||||||
}
|
}
|
||||||
@@ -2300,12 +2308,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
|
|
||||||
if (destinationMailbox is! PresentationMailbox) return;
|
if (destinationMailbox is! PresentationMailbox) return;
|
||||||
|
|
||||||
searchController.updateFilterEmail(
|
searchController.updateFilterEmail(mailboxOption: Some(destinationMailbox));
|
||||||
mailboxOption: destinationMailbox.id == PresentationMailbox.unifiedMailbox.id
|
|
||||||
? const None()
|
|
||||||
: Some(destinationMailbox)
|
|
||||||
);
|
|
||||||
|
|
||||||
dispatchAction(StartSearchEmailAction());
|
dispatchAction(StartSearchEmailAction());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ enum QuickSearchFilter {
|
|||||||
case QuickSearchFilter.from:
|
case QuickSearchFilter.from:
|
||||||
return AppLocalizations.of(context).from_email_address_prefix;
|
return AppLocalizations.of(context).from_email_address_prefix;
|
||||||
case QuickSearchFilter.folder:
|
case QuickSearchFilter.folder:
|
||||||
return mailbox?.getDisplayName(context) ?? AppLocalizations.of(context).all;
|
return mailbox?.getFolderNameForQuickSearch(AppLocalizations.of(context)) ?? AppLocalizations.of(context).allEmail;
|
||||||
case QuickSearchFilter.to:
|
case QuickSearchFilter.to:
|
||||||
return AppLocalizations.of(context).to_email_address_prefix;
|
return AppLocalizations.of(context).to_email_address_prefix;
|
||||||
case QuickSearchFilter.starred:
|
case QuickSearchFilter.starred:
|
||||||
|
|||||||
@@ -8,14 +8,16 @@ import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator
|
|||||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:labels/model/label.dart';
|
import 'package:labels/model/label.dart';
|
||||||
import 'package:model/email/prefix_email_address.dart';
|
import 'package:model/email/prefix_email_address.dart';
|
||||||
import 'package:model/extensions/email_filter_condition_extension.dart';
|
import 'package:model/extensions/email_filter_condition_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:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_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/email_sort_order_type.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
class SearchEmailFilter with EquatableMixin, OptionParamMixin {
|
class SearchEmailFilter with EquatableMixin, OptionParamMixin {
|
||||||
|
|
||||||
@@ -109,13 +111,15 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Filter? mappingToEmailFilterCondition({
|
Filter? mappingToEmailFilterCondition({
|
||||||
EmailFilterCondition? moreFilterCondition
|
EmailFilterCondition? moreFilterCondition,
|
||||||
|
Set<MailboxId>? trashSpamMailboxIds,
|
||||||
}) {
|
}) {
|
||||||
final emailEmailFilterConditionShared = EmailFilterCondition(
|
final emailEmailFilterConditionShared = EmailFilterCondition(
|
||||||
text: text?.value.trim().isNotEmpty == true
|
text: text?.value.trim().isNotEmpty == true
|
||||||
? text?.value.trim()
|
? text?.value.trim()
|
||||||
: null,
|
: null,
|
||||||
inMailbox: mailbox?.mailboxId,
|
inMailbox: _getInMailboxField(),
|
||||||
|
inMailboxOtherThan: _getInMailboxOtherThanField(trashSpamMailboxIds),
|
||||||
after: emailReceiveTimeType.getAfterDate(startDate),
|
after: emailReceiveTimeType.getAfterDate(startDate),
|
||||||
hasAttachment: !hasAttachment ? null : hasAttachment,
|
hasAttachment: !hasAttachment ? null : hasAttachment,
|
||||||
subject: subject?.trim().isNotEmpty == true
|
subject: subject?.trim().isNotEmpty == true
|
||||||
@@ -209,7 +213,7 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
|
|||||||
notKeyword.isNotEmpty ||
|
notKeyword.isNotEmpty ||
|
||||||
emailReceiveTimeType != EmailReceiveTimeType.allTime ||
|
emailReceiveTimeType != EmailReceiveTimeType.allTime ||
|
||||||
sortOrderType != SearchEmailFilter.defaultSortOrder ||
|
sortOrderType != SearchEmailFilter.defaultSortOrder ||
|
||||||
(mailbox != null && mailbox?.id != PresentationMailbox.unifiedMailbox.id) ||
|
(mailbox != null && mailbox?.isUnifiedMailbox != true) ||
|
||||||
label != null ||
|
label != null ||
|
||||||
hasAttachment ||
|
hasAttachment ||
|
||||||
unread;
|
unread;
|
||||||
@@ -224,11 +228,30 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
|
|||||||
notKeyword.isEmpty &&
|
notKeyword.isEmpty &&
|
||||||
emailReceiveTimeType == EmailReceiveTimeType.allTime &&
|
emailReceiveTimeType == EmailReceiveTimeType.allTime &&
|
||||||
sortOrderType == SearchEmailFilter.defaultSortOrder &&
|
sortOrderType == SearchEmailFilter.defaultSortOrder &&
|
||||||
(mailbox == null || mailbox?.id == PresentationMailbox.unifiedMailbox.id) &&
|
(mailbox == null || mailbox?.isUnifiedMailbox == true) &&
|
||||||
label == null &&
|
label == null &&
|
||||||
!hasAttachment &&
|
!hasAttachment &&
|
||||||
!unread;
|
!unread;
|
||||||
|
|
||||||
|
String getMailboxName(AppLocalizations appLocalizations) {
|
||||||
|
if (mailbox == null) return appLocalizations.allEmail;
|
||||||
|
return mailbox!.getFolderNameForQuickSearch(appLocalizations);
|
||||||
|
}
|
||||||
|
|
||||||
|
MailboxId? _getInMailboxField() {
|
||||||
|
if (mailbox != null && mailbox?.isUnifiedMailbox != true) {
|
||||||
|
return mailbox?.id;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<MailboxId>? _getInMailboxOtherThanField(Set<MailboxId>? trashSpamMailboxIds) {
|
||||||
|
if (mailbox == null || mailbox?.isAllEmail == true) {
|
||||||
|
return trashSpamMailboxIds;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [
|
List<Object?> get props => [
|
||||||
from,
|
from,
|
||||||
|
|||||||
+2
-2
@@ -5,6 +5,7 @@ import 'package:tmail_ui_user/features/base/widget/default_field/default_autocom
|
|||||||
import 'package:tmail_ui_user/features/base/widget/default_field/default_button_arrow_down_field_with_tab_key_widget.dart';
|
import 'package:tmail_ui_user/features/base/widget/default_field/default_button_arrow_down_field_with_tab_key_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/default_field/default_date_drop_down_field_widget.dart';
|
import 'package:tmail_ui_user/features/base/widget/default_field/default_date_drop_down_field_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/base/widget/default_field/default_input_field_with_tab_key_widget.dart';
|
import 'package:tmail_ui_user/features/base/widget/default_field/default_input_field_with_tab_key_widget.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/advanced_search/update_label_in_advanced_search_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/advanced_search/update_label_in_advanced_search_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_extension.dart';
|
||||||
@@ -113,8 +114,7 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController> {
|
|||||||
AdvancedSearchFieldWidget(
|
AdvancedSearchFieldWidget(
|
||||||
filterField: FilterField.mailBox,
|
filterField: FilterField.mailBox,
|
||||||
child: Obx(() => DefaultButtonArrowDownFieldWithTabKeyWidget(
|
child: Obx(() => DefaultButtonArrowDownFieldWithTabKeyWidget(
|
||||||
text: controller.selectedFolderName.value ??
|
text: controller.destinationMailboxSelected.value?.getFolderNameForQuickSearch(appLocalizations) ?? appLocalizations.allEmail,
|
||||||
AppLocalizations.of(context).allFolders,
|
|
||||||
iconArrowDown: controller.imagePaths.icDropDown,
|
iconArrowDown: controller.imagePaths.icDropDown,
|
||||||
currentFocusNode: controller.focusManager.mailboxFieldFocusNode,
|
currentFocusNode: controller.focusManager.mailboxFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
||||||
|
|||||||
@@ -367,7 +367,9 @@ class SearchEmailController extends BaseController
|
|||||||
limit: limit,
|
limit: limit,
|
||||||
position: searchEmailFilter.value.position,
|
position: searchEmailFilter.value.position,
|
||||||
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
||||||
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
|
filter: searchEmailFilter.value.mappingToEmailFilterCondition(
|
||||||
|
trashSpamMailboxIds: mailboxDashBoardController.trashSpamMailboxIds,
|
||||||
|
),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
|
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
|
||||||
).last;
|
).last;
|
||||||
|
|
||||||
@@ -439,7 +441,9 @@ class SearchEmailController extends BaseController
|
|||||||
accountId,
|
accountId,
|
||||||
limit: UnsignedInt(5),
|
limit: UnsignedInt(5),
|
||||||
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
||||||
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
|
filter: searchEmailFilter.value.mappingToEmailFilterCondition(
|
||||||
|
trashSpamMailboxIds: mailboxDashBoardController.trashSpamMailboxIds,
|
||||||
|
),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(session, accountId))
|
properties: EmailUtils.getPropertiesForEmailGetMethod(session, accountId))
|
||||||
.then((result) => result.fold(
|
.then((result) => result.fold(
|
||||||
(failure) => <PresentationEmail>[],
|
(failure) => <PresentationEmail>[],
|
||||||
@@ -505,7 +509,9 @@ class SearchEmailController extends BaseController
|
|||||||
limit: ThreadConstants.defaultLimit,
|
limit: ThreadConstants.defaultLimit,
|
||||||
position: searchEmailFilter.value.position,
|
position: searchEmailFilter.value.position,
|
||||||
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
||||||
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
|
filter: searchEmailFilter.value.mappingToEmailFilterCondition(
|
||||||
|
trashSpamMailboxIds: mailboxDashBoardController.trashSpamMailboxIds,
|
||||||
|
),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
|
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@@ -563,7 +569,9 @@ class SearchEmailController extends BaseController
|
|||||||
limit: ThreadConstants.defaultLimit,
|
limit: ThreadConstants.defaultLimit,
|
||||||
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
|
||||||
position: searchEmailFilter.value.position,
|
position: searchEmailFilter.value.position,
|
||||||
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
|
filter: searchEmailFilter.value.mappingToEmailFilterCondition(
|
||||||
|
trashSpamMailboxIds: mailboxDashBoardController.trashSpamMailboxIds,
|
||||||
|
),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
|
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
|
||||||
lastEmailId: lastEmail.id
|
lastEmailId: lastEmail.id
|
||||||
));
|
));
|
||||||
@@ -721,11 +729,7 @@ class SearchEmailController extends BaseController
|
|||||||
|
|
||||||
if (destinationMailbox is! PresentationMailbox) return;
|
if (destinationMailbox is! PresentationMailbox) return;
|
||||||
|
|
||||||
_updateSimpleSearchFilter(
|
_updateSimpleSearchFilter(mailboxOption: Some(destinationMailbox));
|
||||||
mailboxOption: destinationMailbox.id == PresentationMailbox.unifiedMailbox.id
|
|
||||||
? const None()
|
|
||||||
: Some(destinationMailbox)
|
|
||||||
);
|
|
||||||
|
|
||||||
_searchEmailAction();
|
_searchEmailAction();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -774,6 +774,7 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
sort: _searchEmailFilter.sortOrderType.getSortOrder().toNullable(),
|
sort: _searchEmailFilter.sortOrderType.getSortOrder().toNullable(),
|
||||||
filter: _searchEmailFilter.mappingToEmailFilterCondition(
|
filter: _searchEmailFilter.mappingToEmailFilterCondition(
|
||||||
moreFilterCondition: getFilterCondition(),
|
moreFilterCondition: getFilterCondition(),
|
||||||
|
trashSpamMailboxIds: mailboxDashBoardController.trashSpamMailboxIds,
|
||||||
),
|
),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(
|
properties: EmailUtils.getPropertiesForEmailGetMethod(
|
||||||
_session!,
|
_session!,
|
||||||
@@ -1145,7 +1146,8 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
position: _searchEmailFilter.position,
|
position: _searchEmailFilter.position,
|
||||||
sort: _searchEmailFilter.sortOrderType.getSortOrder().toNullable(),
|
sort: _searchEmailFilter.sortOrderType.getSortOrder().toNullable(),
|
||||||
filter: _searchEmailFilter.mappingToEmailFilterCondition(
|
filter: _searchEmailFilter.mappingToEmailFilterCondition(
|
||||||
moreFilterCondition: getFilterCondition()
|
moreFilterCondition: getFilterCondition(),
|
||||||
|
trashSpamMailboxIds: mailboxDashBoardController.trashSpamMailboxIds,
|
||||||
),
|
),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
properties: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
||||||
needRefreshSearchState: needRefreshSearchState
|
needRefreshSearchState: needRefreshSearchState
|
||||||
@@ -1231,7 +1233,8 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
sort: _searchEmailFilter.sortOrderType.getSortOrder().toNullable(),
|
sort: _searchEmailFilter.sortOrderType.getSortOrder().toNullable(),
|
||||||
position: _searchEmailFilter.position,
|
position: _searchEmailFilter.position,
|
||||||
filter: _searchEmailFilter.mappingToEmailFilterCondition(
|
filter: _searchEmailFilter.mappingToEmailFilterCondition(
|
||||||
moreFilterCondition: getFilterCondition()
|
moreFilterCondition: getFilterCondition(),
|
||||||
|
trashSpamMailboxIds: mailboxDashBoardController.trashSpamMailboxIds,
|
||||||
),
|
),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
properties: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
||||||
lastEmailId: lastEmail?.id
|
lastEmailId: lastEmail?.id
|
||||||
|
|||||||
@@ -5471,5 +5471,17 @@
|
|||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"allEmail": "All email",
|
||||||
|
"@allEmail": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"allEmailTrashAndSpam": "All Email, trash & spam",
|
||||||
|
"@allEmailTrashAndSpam": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5790,4 +5790,18 @@ class AppLocalizations {
|
|||||||
name: 'closeMailDetailView',
|
name: 'closeMailDetailView',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String get allEmail {
|
||||||
|
return Intl.message(
|
||||||
|
'All email',
|
||||||
|
name: 'allEmail',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String get allEmailTrashAndSpam {
|
||||||
|
return Intl.message(
|
||||||
|
'All Email, trash & spam',
|
||||||
|
name: 'allEmailTrashAndSpam',
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ class PresentationMailbox with EquatableMixin {
|
|||||||
name: MailboxName('Action required'),
|
name: MailboxName('Action required'),
|
||||||
role: roleActionRequired,
|
role: roleActionRequired,
|
||||||
);
|
);
|
||||||
|
static final PresentationMailbox allEmailTrashAndSpamFolder =
|
||||||
|
PresentationMailbox(MailboxId(Id('all-email-trash-and-spam')));
|
||||||
|
|
||||||
static final roleInbox = Role(inboxRole);
|
static final roleInbox = Role(inboxRole);
|
||||||
static final roleTrash = Role(trashRole);
|
static final roleTrash = Role(trashRole);
|
||||||
|
|||||||
Reference in New Issue
Block a user