TF-1715 Load emails in favorite folder with filters

This commit is contained in:
dab246
2025-10-30 15:50:19 +07:00
committed by Dat H. Pham
parent fc6cc5719b
commit 00324d4c56
17 changed files with 72 additions and 31 deletions
@@ -4,6 +4,7 @@ import 'package:core/presentation/views/list/tree_view.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/extensions/session_extension.dart';
import 'package:model/mailbox/expand_mode.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
@@ -196,6 +197,7 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
.mailboxDashBoardController
.selectedMailbox
.value,
isHighlighted: isFolderHighlighted(mailboxNode),
onOpenMailboxFolderClick: (mailboxNode) =>
mailboxNode != null
? controller.openMailbox(context, mailboxNode.item)
@@ -240,6 +242,17 @@ abstract class BaseMailboxView extends GetWidget<MailboxController>
}).toList();
}
bool get isSearchByStarredOnly {
final searchController =
controller.mailboxDashBoardController.searchController;
return searchController.isSearchEmailRunning &&
searchController.searchEmailFilter.value.isOnlyStarredApplied;
}
bool isFolderHighlighted(MailboxNode mailboxNode) =>
mailboxNode.item.isFavorite && isSearchByStarredOnly;
Widget buildListMailbox(BuildContext context) {
final isDesktop = controller.responsiveUtils.isDesktop(context);
@@ -21,6 +21,13 @@ mixin MailboxWidgetMixin {
bool spamReportEnabled,
bool deletedMessageVaultSupported
) {
if (mailbox.isFavorite) {
return [
if (PlatformInfo.isWeb)
MailboxActions.openInNewTab,
];
}
return [
if (PlatformInfo.isWeb)
MailboxActions.openInNewTab,
@@ -25,6 +25,7 @@ class LabelMailboxItemWidget extends StatefulWidget {
final bool isItemHovered;
final bool isSelected;
final bool isSelectedFolderInModal;
final bool isHighlighted;
final TextStyle? textStyle;
final OnClickOpenMenuMailboxNodeAction? onMenuActionClick;
final OnEmptyMailboxActionCallback? onEmptyMailboxActionCallback;
@@ -38,6 +39,7 @@ class LabelMailboxItemWidget extends StatefulWidget {
this.isItemHovered = false,
this.isSelected = false,
this.isSelectedFolderInModal = false,
this.isHighlighted = false,
this.textStyle,
this.onMenuActionClick,
this.onEmptyMailboxActionCallback,
@@ -218,7 +220,7 @@ class _LabelMailboxItemWidgetState extends State<LabelMailboxItemWidget> {
bool _showMoreButton(BuildContext context) => PlatformInfo.isWeb;
TextStyle get _displayNameTextStyle {
if (widget.isSelected) {
if (widget.isSelected || widget.isHighlighted) {
return ThemeUtils.textStyleInter700(
color: _responsiveUtils.isDesktop(context) ? null : AppColor.iconFolder,
fontSize: 14,
@@ -30,6 +30,7 @@ class MailboxItemWidget extends StatefulWidget {
final Color? iconColor;
final double? itemHeight;
final String? iconSelected;
final bool isHighlighted;
final OnClickExpandMailboxNodeAction? onExpandFolderActionClick;
final OnClickOpenMailboxNodeAction? onOpenMailboxFolderClick;
@@ -43,6 +44,7 @@ class MailboxItemWidget extends StatefulWidget {
super.key,
required this.mailboxNode,
this.mailboxDisplayed = MailboxDisplayed.mailbox,
this.isHighlighted = false,
this.mailboxNodeSelected,
this.mailboxActions,
this.mailboxIdAlreadySelected,
@@ -116,6 +118,7 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
mailboxNode: widget.mailboxNode,
isItemHovered: _isItemHovered,
isSelected: _isSelected,
isHighlighted: widget.isHighlighted,
textStyle: widget.textStyle,
onMenuActionClick: widget.onMenuActionClick,
onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback,
@@ -174,6 +177,7 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
mailboxNode: widget.mailboxNode,
isItemHovered: _isItemHovered,
isSelected: _isSelected,
isHighlighted: widget.isHighlighted,
textStyle: widget.textStyle,
onMenuActionClick: widget.onMenuActionClick,
onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback,
@@ -224,6 +228,7 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
mailboxNode: widget.mailboxNode,
isItemHovered: _isItemHovered,
isSelected: _isSelected,
isHighlighted: widget.isHighlighted,
textStyle: widget.textStyle,
onMenuActionClick: widget.onMenuActionClick,
onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback,
@@ -273,6 +278,7 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
mailboxNode: widget.mailboxNode,
showTrailing: false,
isSelected: _isSelected,
isHighlighted: widget.isHighlighted,
isItemHovered: _isItemHovered,
textStyle: widget.textStyle,
isSelectedFolderInModal: isSelectedFolderInModal,
@@ -306,7 +312,9 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
Color get backgroundColorItem {
if (widget.mailboxDisplayed == MailboxDisplayed.mailbox) {
return _isSelected ? AppColor.blue100 : Colors.transparent;
return _isSelected || widget.isHighlighted
? AppColor.blue100
: Colors.transparent;
}
return Colors.white;
}