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
@@ -9,7 +9,7 @@ import 'package:tmail_ui_user/features/email/presentation/extensions/email_loade
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/domain/extensions/presentation_email_map_extension.dart';
import 'package:tmail_ui_user/features/thread_detail/domain/extensions/list_email_in_thread_detail_info_extension.dart';
@@ -18,7 +18,7 @@ import 'package:tmail_ui_user/main/routes/dialog_router.dart';
extension AddLabelToThreadExtension on ThreadDetailController {
Future<void> openAddLabelToEmailDialogModal() async {
if (!mailboxDashBoardController.isLabelFeatureEnabled) return;
if (!mailboxDashBoardController.isLabelAvailable) return;
final labels = mailboxDashBoardController.labelController.labels;
if (emailsInThreadDetailInfo.isEmpty || labels.isEmpty) {
@@ -19,7 +19,7 @@ import 'package:tmail_ui_user/features/labels/presentation/widgets/label_item_co
import 'package:tmail_ui_user/features/labels/presentation/widgets/label_list_context_menu.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.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/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/thread/domain/state/mark_as_multiple_email_read_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_star_multiple_email_state.dart';
import 'package:tmail_ui_user/features/thread_detail/domain/extensions/list_email_in_thread_detail_info_extension.dart';
@@ -125,7 +125,7 @@ extension OnThreadDetailActionClick on ThreadDetailController {
_moveToMailbox(mailboxId, threadDetailActionType);
break;
case EmailActionType.labelAs:
if (!mailboxDashBoardController.isLabelFeatureEnabled) return;
if (!mailboxDashBoardController.isLabelAvailable) return;
openAddLabelToEmailDialogModal();
break;
default:
@@ -137,7 +137,7 @@ extension OnThreadDetailActionClick on ThreadDetailController {
if (currentContext == null) return;
final moreActions = [
if (mailboxDashBoardController.isLabelFeatureEnabled)
if (mailboxDashBoardController.isLabelAvailable)
EmailActionType.labelAs,
threadDetailIsRead
? EmailActionType.markAsUnread
@@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_app_bar_widget_styles.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_bottom_bar_widget.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_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';
import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart';
@@ -101,16 +102,13 @@ class ThreadDetailView extends GetWidget<ThreadDetailController> {
}
}),
Obx(() {
final isLabelCapabilitySupported = controller
.mailboxDashBoardController.isLabelCapabilitySupported;
final isLabelAvailable = controller
.mailboxDashBoardController.isLabelAvailable;
final labelController =
controller.mailboxDashBoardController.labelController;
final isLabelSettingEnabled =
labelController.isLabelSettingEnabled.isTrue;
final threadChildren = isLabelCapabilitySupported && isLabelSettingEnabled
final threadChildren = isLabelAvailable
? controller.getThreadDetailEmailViews(labels: labelController.labels)
: controller.getThreadDetailEmailViews();