TF-4195 Add Label to Thread

This commit is contained in:
dab246
2026-01-06 12:35:13 +07:00
committed by Dat H. Pham
parent ef1efc9310
commit 94fd6f8071
34 changed files with 829 additions and 40 deletions
@@ -12,8 +12,8 @@ import 'package:tmail_ui_user/features/labels/presentation/widgets/label_item_co
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
typedef OnAddLabelToEmailCallback = void Function(
EmailId emailId,
typedef OnAddLabelToEmailsCallback = void Function(
List<EmailId> emailIds,
Label label,
bool isSelected,
);
@@ -21,15 +21,15 @@ typedef OnAddLabelToEmailCallback = void Function(
class AddLabelToEmailModal extends StatefulWidget {
final List<Label> labels;
final List<Label> emailLabels;
final EmailId emailId;
final OnAddLabelToEmailCallback onAddLabelToEmailCallback;
final List<EmailId> emailIds;
final OnAddLabelToEmailsCallback onAddLabelToEmailsCallback;
const AddLabelToEmailModal({
super.key,
required this.labels,
required this.emailLabels,
required this.emailId,
required this.onAddLabelToEmailCallback,
required this.emailIds,
required this.onAddLabelToEmailsCallback,
});
@override
@@ -146,7 +146,7 @@ class _AddLabelToEmailModalState extends State<AddLabelToEmailModal> {
}
void _onSelectLabel(Label label, bool isSelected) {
widget.onAddLabelToEmailCallback(widget.emailId, label, isSelected);
widget.onAddLabelToEmailsCallback(widget.emailIds, label, isSelected);
popBack();
}
@@ -1,28 +1,24 @@
import 'package:core/presentation/resources/image_paths.dart';
import 'package:flutter/material.dart';
import 'package:labels/model/label.dart';
import 'package:model/email/presentation_email.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/features/labels/presentation/widgets/label_item_context_menu.dart';
class LabelListContextMenu extends StatelessWidget {
final PresentationEmail presentationEmail;
final List<Label> labelList;
final List<Label> emailLabels;
final ImagePaths imagePaths;
final OnSelectLabelAction onSelectLabelAction;
const LabelListContextMenu({
super.key,
required this.labelList,
required this.presentationEmail,
required this.emailLabels,
required this.imagePaths,
required this.onSelectLabelAction,
});
@override
Widget build(BuildContext context) {
final emailLabels = presentationEmail.getLabelList(labelList);
return ListView.builder(
shrinkWrap: true,
itemCount: labelList.length,