TF-4229 Add widget for label search field

This commit is contained in:
dab246
2026-01-19 17:49:14 +07:00
committed by Dat H. Pham
parent e1d1f2e066
commit 7839e6b339
22 changed files with 293 additions and 87 deletions
@@ -897,7 +897,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
pressEmailAction(actionType, presentationEmail);
break;
case EmailActionType.labelAs:
if (!isLabelFeatureEnabled) return;
if (!isLabelAvailable) return;
openAddLabelToEmailDialogModal(presentationEmail);
break;
default:
@@ -41,6 +41,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/information_se
import 'package:tmail_ui_user/features/email/presentation/widgets/mail_unsubscribed_banner.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/view_entire_message_with_message_clipped_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_open_context_menu_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/verify_display_overlay_view_on_iframe_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
@@ -103,7 +104,7 @@ class EmailView extends GetWidget<SingleEmailController> {
handleEmailAction: controller.handleEmailAction,
additionalActions: [],
emailIsRead: presentationEmail.hasRead,
isLabelFeatureEnabled: controller.isLabelFeatureEnabled,
isLabelFeatureEnabled: controller.isLabelAvailable,
labels: controller.mailboxDashBoardController.labelController.labels,
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
@@ -258,18 +259,15 @@ class EmailView extends GetWidget<SingleEmailController> {
children: [
if (!isInsideThreadDetailView || isFirstEmailInThreadDetail)
Obx(() {
final isLabelCapabilitySupported = controller
.mailboxDashBoardController.isLabelCapabilitySupported;
final isLabelAvailable = controller
.mailboxDashBoardController.isLabelAvailable;
final labelController =
controller.mailboxDashBoardController.labelController;
final isLabelSettingEnabled =
labelController.isLabelSettingEnabled.isTrue;
List<Label>? emailLabels;
if (isLabelCapabilitySupported && isLabelSettingEnabled) {
if (isLabelAvailable) {
emailLabels = presentationEmail.getLabelList(
labelController.labels,
);
@@ -316,7 +314,7 @@ class EmailView extends GetWidget<SingleEmailController> {
EmailActionType.deletePermanently,
],
emailIsRead: presentationEmail.hasRead,
isLabelFeatureEnabled: controller.isLabelFeatureEnabled,
isLabelFeatureEnabled: controller.isLabelAvailable,
labels: controller.mailboxDashBoardController.labelController.labels,
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
@@ -14,7 +14,7 @@ import 'package:tmail_ui_user/features/email/presentation/extensions/presentatio
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
import 'package:tmail_ui_user/features/labels/domain/exceptions/label_exceptions.dart';
import 'package:tmail_ui_user/features/labels/presentation/widgets/add_label_to_email_modal.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/labels/check_label_available_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/update_current_emails_flags_extension.dart';
import 'package:tmail_ui_user/features/thread/data/extensions/map_keywords_extension.dart';
import 'package:tmail_ui_user/features/thread/domain/extensions/presentation_email_map_extension.dart';
@@ -22,8 +22,8 @@ import 'package:tmail_ui_user/features/thread_detail/domain/extensions/list_emai
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
extension HandleLabelForEmailExtension on SingleEmailController {
bool get isLabelFeatureEnabled {
return mailboxDashBoardController.isLabelFeatureEnabled;
bool get isLabelAvailable {
return mailboxDashBoardController.isLabelAvailable;
}
void toggleLabelToEmail(EmailId emailId, Label label, bool isSelected) {
@@ -213,7 +213,7 @@ extension HandleLabelForEmailExtension on SingleEmailController {
}
Future<void> openAddLabelToEmailDialogModal(PresentationEmail email) async {
if (!isLabelFeatureEnabled) return;
if (!isLabelAvailable) return;
final labels = mailboxDashBoardController.labelController.labels;
final emailLabels = email.getLabelList(labels);
final emailId = email.id;