TF-4174 Display tag in opened email view when thread is disabled on web desktop
This commit is contained in:
@@ -22,6 +22,7 @@ import 'package:tmail_ui_user/features/base/widget/optional_scroll.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/handle_on_iframe_click_in_email_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/presentation_email_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/extensions/validate_display_free_busy_message_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/styles/email_view_styles.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/utils/email_action_reactor/email_action_reactor.dart';
|
||||
@@ -240,18 +241,27 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
ScrollController? scrollController,
|
||||
}) {
|
||||
final isMobileResponsive = controller.responsiveUtils.isMobile(context);
|
||||
final isWebDesktop = controller.responsiveUtils.isWebDesktop(context);
|
||||
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
if (!isInsideThreadDetailView || isFirstEmailInThreadDetail)
|
||||
EmailSubjectWidget(
|
||||
presentationEmail: presentationEmail.copyWith(
|
||||
subject: threadSubject,
|
||||
),
|
||||
isMobileResponsive: isMobileResponsive,
|
||||
),
|
||||
Obx(() {
|
||||
final allLabels =
|
||||
controller.mailboxDashBoardController.labelController.labels;
|
||||
final emailLabels = presentationEmail.getLabelList(allLabels);
|
||||
|
||||
return EmailSubjectWidget(
|
||||
presentationEmail: presentationEmail.copyWith(
|
||||
subject: threadSubject,
|
||||
),
|
||||
isMobileResponsive: isMobileResponsive,
|
||||
isWebDesktop: isWebDesktop,
|
||||
labels: emailLabels,
|
||||
);
|
||||
}),
|
||||
Obx(() => InformationSenderAndReceiverBuilder(
|
||||
emailSelected: presentationEmail,
|
||||
imagePaths: controller.imagePaths,
|
||||
|
||||
@@ -1,33 +1,81 @@
|
||||
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/styles/email_subject_styles.dart';
|
||||
import 'package:tmail_ui_user/features/labels/presentation/widgets/label_widget.dart';
|
||||
|
||||
class EmailSubjectWidget extends StatelessWidget {
|
||||
|
||||
final PresentationEmail presentationEmail;
|
||||
final bool isMobileResponsive;
|
||||
final bool isWebDesktop;
|
||||
final List<Label>? labels;
|
||||
|
||||
const EmailSubjectWidget({
|
||||
super.key,
|
||||
required this.presentationEmail,
|
||||
this.isMobileResponsive = false,
|
||||
this.isWebDesktop = false,
|
||||
this.labels,
|
||||
});
|
||||
|
||||
bool get _hasLabels => labels?.isNotEmpty == true;
|
||||
|
||||
String get _title => presentationEmail.getEmailTitle();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (presentationEmail.getEmailTitle().isEmpty) {
|
||||
return const SizedBox.shrink();
|
||||
final padding = isMobileResponsive
|
||||
? EmailSubjectStyles.mobilePadding
|
||||
: EmailSubjectStyles.padding;
|
||||
|
||||
if (_title.isEmpty) {
|
||||
return _hasLabels && isWebDesktop
|
||||
? Padding(
|
||||
padding: padding,
|
||||
child: _buildLabelsOnly(),
|
||||
)
|
||||
: const SizedBox.shrink();
|
||||
}
|
||||
|
||||
if (_hasLabels && isWebDesktop) {
|
||||
return Padding(
|
||||
padding: padding,
|
||||
child: _buildTitleWithLabels(),
|
||||
);
|
||||
}
|
||||
|
||||
return Padding(
|
||||
padding: isMobileResponsive
|
||||
? EmailSubjectStyles.mobilePadding
|
||||
: EmailSubjectStyles.padding,
|
||||
child: Text(
|
||||
presentationEmail.getEmailTitle(),
|
||||
style: EmailSubjectStyles.textStyle,
|
||||
maxLines: EmailSubjectStyles.maxLines,
|
||||
)
|
||||
padding: padding,
|
||||
child: _buildTitle(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildTitle() {
|
||||
return Text(
|
||||
_title,
|
||||
style: EmailSubjectStyles.textStyle,
|
||||
maxLines: EmailSubjectStyles.maxLines,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildLabelsOnly() {
|
||||
return Wrap(
|
||||
spacing: 10,
|
||||
runSpacing: 10,
|
||||
crossAxisAlignment: WrapCrossAlignment.center,
|
||||
children: labels!.map(LabelWidget.create).toList(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildTitleWithLabels() {
|
||||
return Wrap(
|
||||
spacing: 10,
|
||||
runSpacing: 10,
|
||||
crossAxisAlignment: WrapCrossAlignment.center,
|
||||
children: [
|
||||
_buildTitle(),
|
||||
...labels!.map(LabelWidget.create),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ class LabelWidget extends StatelessWidget {
|
||||
this.isTruncateLabel = false,
|
||||
});
|
||||
|
||||
factory LabelWidget.create(Label label) => LabelWidget(label: label);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final showTooltip =
|
||||
|
||||
Reference in New Issue
Block a user