TF-4171 Display tag in mailbox list, search list on mobile
This commit is contained in:
@@ -6,6 +6,7 @@ import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/labels/ai_action_tag_widget.dart';
|
||||
import 'package:tmail_ui_user/features/labels/presentation/widgets/label_list_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/mixin/base_email_item_tile.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/item_email_tile_styles.dart';
|
||||
@@ -22,6 +23,7 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
final bool isShowingEmailContent;
|
||||
final bool isSenderImportantFlagEnabled;
|
||||
final bool isAINeedsActionEnabled;
|
||||
final bool autoWrapTagsByMaxWidth;
|
||||
final List<Label>? labels;
|
||||
final OnPressEmailActionClick? emailActionClick;
|
||||
final OnMoreActionClick? onMoreActionClick;
|
||||
@@ -36,6 +38,7 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
this.isSearchEmailRunning = false,
|
||||
this.isSenderImportantFlagEnabled = true,
|
||||
this.isAINeedsActionEnabled = true,
|
||||
this.autoWrapTagsByMaxWidth = false,
|
||||
this.mailboxContain,
|
||||
this.padding,
|
||||
this.isDrag = false,
|
||||
@@ -128,17 +131,7 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
)),
|
||||
Padding(
|
||||
padding: const EdgeInsetsDirectional.only(top: 2),
|
||||
child: Row(children: [
|
||||
Expanded(child: buildEmailPartialContent(
|
||||
context,
|
||||
presentationEmail,
|
||||
isSearchEmailRunning,
|
||||
searchQuery)),
|
||||
if (_shouldShowAIAction)
|
||||
const AiActionTagWidget(
|
||||
margin: EdgeInsetsDirectional.only(start: 8),
|
||||
),
|
||||
])
|
||||
child: _buildPartialContent(context),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -146,6 +139,94 @@ class EmailTileBuilder extends StatelessWidget with BaseEmailItemTile {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildPartialContent(BuildContext context) {
|
||||
final hasLabels = labels?.isNotEmpty == true;
|
||||
final isDesktop = responsiveUtils.isDesktop(context);
|
||||
final isAutoWrap = autoWrapTagsByMaxWidth;
|
||||
|
||||
final hasContent =
|
||||
presentationEmail.getPartialContent().isNotEmpty;
|
||||
|
||||
final partialContent = buildEmailPartialContent(
|
||||
context,
|
||||
presentationEmail,
|
||||
isSearchEmailRunning,
|
||||
searchQuery,
|
||||
);
|
||||
|
||||
if (!hasLabels) {
|
||||
return Row(
|
||||
children: [
|
||||
if (hasContent)
|
||||
Flexible(child: partialContent),
|
||||
if (_shouldShowAIAction)
|
||||
const AiActionTagWidget(
|
||||
margin: EdgeInsetsDirectional.only(start: 8),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
if (!hasContent) {
|
||||
return Row(
|
||||
children: [
|
||||
if (_shouldShowAIAction)
|
||||
const AiActionTagWidget(
|
||||
margin: EdgeInsetsDirectional.only(start: 8),
|
||||
),
|
||||
Flexible(
|
||||
child: LabelTagListWidget(
|
||||
tags: labels!,
|
||||
autoWrapTagsByMaxWidth: isAutoWrap,
|
||||
isDesktop: isDesktop,
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
if (!isAutoWrap) {
|
||||
return Row(
|
||||
children: [
|
||||
Flexible(child: partialContent),
|
||||
if (_shouldShowAIAction)
|
||||
const AiActionTagWidget(
|
||||
margin: EdgeInsetsDirectional.only(start: 8),
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
LabelTagListWidget(
|
||||
tags: labels!,
|
||||
autoWrapTagsByMaxWidth: isAutoWrap,
|
||||
isDesktop: isDesktop,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
return LayoutBuilder(
|
||||
builder: (_, constraints) {
|
||||
return Row(
|
||||
children: [
|
||||
Expanded(child: partialContent),
|
||||
if (_shouldShowAIAction)
|
||||
const AiActionTagWidget(
|
||||
margin: EdgeInsetsDirectional.only(start: 8),
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
ConstrainedBox(
|
||||
constraints: BoxConstraints(maxWidth: constraints.maxWidth / 2),
|
||||
child: LabelTagListWidget(
|
||||
tags: labels!,
|
||||
autoWrapTagsByMaxWidth: isAutoWrap,
|
||||
isDesktop: isDesktop,
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
bool get _shouldShowAIAction =>
|
||||
isAINeedsActionEnabled && presentationEmail.hasNeedAction;
|
||||
}
|
||||
Reference in New Issue
Block a user