TF-4174 Display tag in opened email view when thread is enabled on web desktop

This commit is contained in:
dab246
2025-11-25 15:00:19 +07:00
committed by Dat H. Pham
parent e99643085d
commit e10a9d2f64
2 changed files with 13 additions and 0 deletions
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:model/email/email_in_thread_status.dart'; import 'package:model/email/email_in_thread_status.dart';
import 'package:model/extensions/presentation_email_extension.dart'; import 'package:model/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_mail_shortcut_actions_extension.dart'; import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_mail_shortcut_actions_extension.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/load_more_thread_detail_emails.dart'; import 'package:tmail_ui_user/features/thread_detail/presentation/extension/load_more_thread_detail_emails.dart';
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_load_more_segments.dart'; import 'package:tmail_ui_user/features/thread_detail/presentation/extension/thread_detail_load_more_segments.dart';
@@ -44,6 +45,11 @@ extension GetThreadDetailEmailViews on ThreadDetailController {
final isFirstEmailInThreadDetail = indexOfEmailId == 0; final isFirstEmailInThreadDetail = indexOfEmailId == 0;
if (presentationEmail.emailInThreadStatus == EmailInThreadStatus.collapsed) { if (presentationEmail.emailInThreadStatus == EmailInThreadStatus.collapsed) {
final allLabels = mailboxDashBoardController.labelController.labels;
final emailLabels = isFirstEmailInThreadDetail
? emailIdsPresentation.values.last?.getLabelList(allLabels)
: null;
return ThreadDetailCollapsedEmail( return ThreadDetailCollapsedEmail(
presentationEmail: presentationEmail.copyWith( presentationEmail: presentationEmail.copyWith(
subject: isFirstEmailInThreadDetail subject: isFirstEmailInThreadDetail
@@ -57,6 +63,7 @@ extension GetThreadDetailEmailViews on ThreadDetailController {
mailboxDashBoardController.mapMailboxById, mailboxDashBoardController.mapMailboxById,
), ),
emailLoaded: null, emailLoaded: null,
labels: emailLabels,
onEmailActionClick: threadDetailOnEmailActionClick, onEmailActionClick: threadDetailOnEmailActionClick,
openEmailAddressDetailAction: (_, emailAddress) { openEmailAddressDetailAction: (_, emailAddress) {
openEmailAddressDetailAction(emailAddress); openEmailAddressDetailAction(emailAddress);
@@ -3,6 +3,7 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/theme_utils.dart'; import 'package:core/presentation/utils/theme_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:labels/model/label.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart'; import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart';
@@ -21,6 +22,7 @@ class ThreadDetailCollapsedEmail extends StatelessWidget {
this.openEmailAddressDetailAction, this.openEmailAddressDetailAction,
this.mailboxContain, this.mailboxContain,
this.emailLoaded, this.emailLoaded,
this.labels,
this.onEmailActionClick, this.onEmailActionClick,
this.onToggleThreadDetailCollapseExpand, this.onToggleThreadDetailCollapseExpand,
}); });
@@ -33,6 +35,7 @@ class ThreadDetailCollapsedEmail extends StatelessWidget {
final PresentationMailbox? mailboxContain; final PresentationMailbox? mailboxContain;
final EmailLoaded? emailLoaded; final EmailLoaded? emailLoaded;
final OnEmailActionClick? onEmailActionClick; final OnEmailActionClick? onEmailActionClick;
final List<Label>? labels;
final VoidCallback? onToggleThreadDetailCollapseExpand; final VoidCallback? onToggleThreadDetailCollapseExpand;
String get preview => presentationEmail.getPartialContent(); String get preview => presentationEmail.getPartialContent();
@@ -40,6 +43,7 @@ class ThreadDetailCollapsedEmail extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final isMobileResponsive = responsiveUtils.isMobile(context); final isMobileResponsive = responsiveUtils.isMobile(context);
final isWebDesktop = responsiveUtils.isWebDesktop(context);
return DecoratedBox( return DecoratedBox(
decoration: const BoxDecoration( decoration: const BoxDecoration(
@@ -61,6 +65,8 @@ class ThreadDetailCollapsedEmail extends StatelessWidget {
EmailSubjectWidget( EmailSubjectWidget(
presentationEmail: presentationEmail, presentationEmail: presentationEmail,
isMobileResponsive: isMobileResponsive, isMobileResponsive: isMobileResponsive,
isWebDesktop: isWebDesktop,
labels: labels,
), ),
InformationSenderAndReceiverBuilder( InformationSenderAndReceiverBuilder(
emailSelected: presentationEmail, emailSelected: presentationEmail,