diff --git a/lib/features/mailbox/presentation/base_mailbox_view.dart b/lib/features/mailbox/presentation/base_mailbox_view.dart index 37affb3e8..bfaf6573a 100644 --- a/lib/features/mailbox/presentation/base_mailbox_view.dart +++ b/lib/features/mailbox/presentation/base_mailbox_view.dart @@ -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:jmap_dart_client/jmap/core/id.dart'; import 'package:model/extensions/presentation_mailbox_extension.dart'; import 'package:model/extensions/session_extension.dart'; import 'package:model/mailbox/expand_mode.dart'; @@ -396,6 +397,13 @@ abstract class BaseMailboxView extends GetWidget .isLabelSettingEnabled .isTrue; + final selectedMailbox = controller.mailboxDashBoardController + .selectedMailbox.value; + Id? labelIdSelected; + if (selectedMailbox is PresentationLabelMailbox) { + labelIdSelected = selectedMailbox.id.id; + } + if (isLabelCapabilitySupported && isLabelSettingEnabled) { final labelListExpandMode = labelController.labelListExpandMode.value; final labels = labelController.labels; @@ -407,6 +415,7 @@ abstract class BaseMailboxView extends GetWidget labels: labels, imagePaths: controller.imagePaths, isDesktop: isDesktop, + labelIdSelected: labelIdSelected, onOpenLabelCallback: (label) => controller.openMailbox( context, PresentationLabelMailbox.initial(label), diff --git a/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart b/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart index c39e3c83c..89c989190 100644 --- a/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart +++ b/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart'; import 'package:model/extensions/presentation_mailbox_extension.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/model/presentation_label_mailbox.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/navigation_router.dart'; @@ -143,4 +144,18 @@ extension PresentationMailboxExtension on PresentationMailbox { } return null; } + + bool get isCacheable => !isFavorite && this is! PresentationLabelMailbox; + + bool get isLabelMailbox => this is PresentationLabelMailbox; + + String? get filterKeyword { + if (isFavorite) { + return KeyWordIdentifier.emailFlagged.value; + } + if (this is PresentationLabelMailbox) { + return (this as PresentationLabelMailbox).label.keyword; + } + return null; + } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/widgets/labels/label_list_item.dart b/lib/features/mailbox/presentation/widgets/labels/label_list_item.dart index 88198a376..0fafffa53 100644 --- a/lib/features/mailbox/presentation/widgets/labels/label_list_item.dart +++ b/lib/features/mailbox/presentation/widgets/labels/label_list_item.dart @@ -1,3 +1,4 @@ +import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:flutter/material.dart'; import 'package:labels/extensions/label_extension.dart'; @@ -12,6 +13,7 @@ class LabelListItem extends StatelessWidget { final Label label; final ImagePaths imagePaths; final bool isDesktop; + final bool isSelected; final OnOpenLabelCallback onOpenLabelCallback; const LabelListItem({ @@ -20,6 +22,7 @@ class LabelListItem extends StatelessWidget { required this.imagePaths, required this.onOpenLabelCallback, this.isDesktop = false, + this.isSelected = false, }); @override @@ -38,7 +41,10 @@ class LabelListItem extends StatelessWidget { borderRadius: borderRadius, onTap: () => onOpenLabelCallback(label), child: Container( - decoration: BoxDecoration(borderRadius: borderRadius), + decoration: BoxDecoration( + borderRadius: borderRadius, + color: _backgroundColorItem, + ), padding: EdgeInsetsDirectional.symmetric( horizontal: isDesktop ? MailboxItemWidgetStyles.itemPadding @@ -70,4 +76,7 @@ class LabelListItem extends StatelessWidget { ), ); } + + Color get _backgroundColorItem => + isSelected ? AppColor.blue100 : Colors.transparent; } diff --git a/lib/features/mailbox/presentation/widgets/labels/label_list_view.dart b/lib/features/mailbox/presentation/widgets/labels/label_list_view.dart index 6e21327e6..f0a9df03c 100644 --- a/lib/features/mailbox/presentation/widgets/labels/label_list_view.dart +++ b/lib/features/mailbox/presentation/widgets/labels/label_list_view.dart @@ -1,5 +1,6 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:flutter/material.dart'; +import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:labels/model/label.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/labels/label_list_item.dart'; @@ -7,6 +8,7 @@ class LabelListView extends StatelessWidget { final List