TF-3236 Display SearchSnippet in search suggest
This commit is contained in:
@@ -8,6 +8,7 @@ class RichTextBuilder extends StatefulWidget {
|
|||||||
final TextStyle styleWord;
|
final TextStyle styleWord;
|
||||||
final String? preMarkedText;
|
final String? preMarkedText;
|
||||||
final bool ensureHighlightVisible;
|
final bool ensureHighlightVisible;
|
||||||
|
final bool? softWrap;
|
||||||
|
|
||||||
const RichTextBuilder({
|
const RichTextBuilder({
|
||||||
super.key,
|
super.key,
|
||||||
@@ -17,6 +18,7 @@ class RichTextBuilder extends StatefulWidget {
|
|||||||
required this.styleWord,
|
required this.styleWord,
|
||||||
this.preMarkedText,
|
this.preMarkedText,
|
||||||
this.ensureHighlightVisible = false,
|
this.ensureHighlightVisible = false,
|
||||||
|
this.softWrap,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -63,6 +65,7 @@ class _RichTextBuilderState extends State<RichTextBuilder> with AutomaticKeepAli
|
|||||||
),
|
),
|
||||||
style: widget.styleOrigin,
|
style: widget.styleOrigin,
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
|
softWrap: widget.softWrap,
|
||||||
overflow: TextOverflow.ellipsis
|
overflow: TextOverflow.ellipsis
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+70
-43
@@ -7,6 +7,7 @@ import 'package:model/email/presentation_email.dart';
|
|||||||
import 'package:model/extensions/presentation_email_extension.dart';
|
import 'package:model/extensions/presentation_email_extension.dart';
|
||||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
|
|
||||||
class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||||
|
|
||||||
@@ -15,12 +16,14 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
final PresentationEmail _presentationEmail;
|
final PresentationEmail _presentationEmail;
|
||||||
final PresentationMailbox? _presentationMailbox;
|
final PresentationMailbox? _presentationMailbox;
|
||||||
final EdgeInsetsGeometry? contentPadding;
|
final EdgeInsetsGeometry? contentPadding;
|
||||||
|
final SearchQuery? searchQuery;
|
||||||
|
|
||||||
EmailQuickSearchItemTileWidget(
|
EmailQuickSearchItemTileWidget(
|
||||||
this._presentationEmail,
|
this._presentationEmail,
|
||||||
this._presentationMailbox, {
|
this._presentationMailbox, {
|
||||||
Key? key,
|
Key? key,
|
||||||
this.contentPadding,
|
this.contentPadding,
|
||||||
|
this.searchQuery,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -46,54 +49,78 @@ class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
|||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||||
Container(
|
Container(
|
||||||
constraints: BoxConstraints(maxWidth: maxWidthItem / 3),
|
constraints: BoxConstraints(maxWidth: maxWidthItem / 3),
|
||||||
child: Text(_getInformationSender(),
|
child: RichTextBuilder(
|
||||||
maxLines: 1,
|
textOrigin: _getInformationSender(),
|
||||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
wordToStyle: searchQuery?.value ?? '',
|
||||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
styleOrigin: const TextStyle(
|
||||||
style: const TextStyle(
|
fontSize: 15,
|
||||||
fontSize: 15,
|
fontWeight: FontWeight.w600,
|
||||||
fontWeight: FontWeight.w600,
|
color: Colors.black,
|
||||||
color: Colors.black)),
|
),
|
||||||
),
|
styleWord: TextStyle(
|
||||||
const SizedBox(width: 16),
|
fontSize: 15,
|
||||||
Expanded(
|
fontWeight: FontWeight.w600,
|
||||||
child: Text(_presentationEmail.getEmailTitle(),
|
color: Colors.black,
|
||||||
maxLines: 1,
|
backgroundColor: Colors.amberAccent[200],
|
||||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
),
|
||||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
fontWeight: FontWeight.normal,
|
|
||||||
color: Colors.black)),
|
|
||||||
),
|
|
||||||
if (_presentationEmail.hasAttachment == true)
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
|
||||||
child: SvgPicture.asset(imagePath.icAttachment, width: 14, height: 14, fit: BoxFit.fill),
|
|
||||||
),
|
),
|
||||||
Text(_presentationEmail.getReceivedAt(Localizations.localeOf(context).toLanguageTag()),
|
),
|
||||||
textAlign: TextAlign.right,
|
const SizedBox(width: 16),
|
||||||
maxLines: 1,
|
Expanded(
|
||||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
child: RichTextBuilder(
|
||||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
textOrigin: _presentationEmail.getEmailTitle(),
|
||||||
style: const TextStyle(
|
wordToStyle: searchQuery?.value ?? '',
|
||||||
fontSize: 13,
|
preMarkedText: _presentationEmail.sanitizedSearchSnippetSubject,
|
||||||
fontWeight: FontWeight.normal,
|
ensureHighlightVisible: true,
|
||||||
color: Colors.black))
|
styleOrigin: const TextStyle(
|
||||||
]),
|
fontSize: 13,
|
||||||
const SizedBox(height: 3),
|
color: Colors.black,
|
||||||
Text(_presentationEmail.getPartialContent(),
|
fontWeight: FontWeight.normal
|
||||||
|
),
|
||||||
|
styleWord: TextStyle(
|
||||||
|
fontSize: 13,
|
||||||
|
backgroundColor: Colors.amberAccent[200],
|
||||||
|
color: Colors.black,
|
||||||
|
fontWeight: FontWeight.normal
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (_presentationEmail.hasAttachment == true)
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 8),
|
||||||
|
child: SvgPicture.asset(imagePath.icAttachment, width: 14, height: 14, fit: BoxFit.fill),
|
||||||
|
),
|
||||||
|
Text(_presentationEmail.getReceivedAt(Localizations.localeOf(context).toLanguageTag()),
|
||||||
|
textAlign: TextAlign.right,
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
fontWeight: FontWeight.normal,
|
fontWeight: FontWeight.normal,
|
||||||
color: AppColor.colorContentEmail))
|
color: Colors.black))
|
||||||
]
|
]),
|
||||||
|
const SizedBox(height: 3),
|
||||||
|
RichTextBuilder(
|
||||||
|
textOrigin: _presentationEmail.getPartialContent(),
|
||||||
|
wordToStyle: searchQuery?.value ?? '',
|
||||||
|
preMarkedText: _presentationEmail.sanitizedSearchSnippetPreview,
|
||||||
|
ensureHighlightVisible: true,
|
||||||
|
styleOrigin: const TextStyle(
|
||||||
|
fontSize: 13,
|
||||||
|
color: AppColor.colorContentEmail,
|
||||||
|
fontWeight: FontWeight.normal
|
||||||
|
),
|
||||||
|
styleWord: TextStyle(
|
||||||
|
fontSize: 13,
|
||||||
|
color: AppColor.colorContentEmail,
|
||||||
|
backgroundColor: Colors.amberAccent[200],
|
||||||
|
)
|
||||||
|
),
|
||||||
|
]
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/qu
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/email_quick_search_item_tile_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/email_quick_search_item_tile_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/recent_search_item_tile_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/quick_search/recent_search_item_tile_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_filters/search_filter_button.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_filters/search_filter_button.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import 'package:tmail_ui_user/features/search/email/presentation/widgets/email_s
|
|||||||
import 'package:tmail_ui_user/features/search/email/presentation/widgets/email_sort_by_cupertino_action_sheet_action_builder.dart';
|
import 'package:tmail_ui_user/features/search/email/presentation/widgets/email_sort_by_cupertino_action_sheet_action_builder.dart';
|
||||||
import 'package:tmail_ui_user/features/search/email/presentation/widgets/empty_search_email_widget.dart';
|
import 'package:tmail_ui_user/features/search/email/presentation/widgets/empty_search_email_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/search/email/presentation/widgets/search_email_loading_bar_widget.dart';
|
import 'package:tmail_ui_user/features/search/email/presentation/widgets/search_email_loading_bar_widget.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/styles/item_email_tile_styles.dart';
|
import 'package:tmail_ui_user/features/thread/presentation/styles/item_email_tile_styles.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'
|
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'
|
||||||
|
|||||||
Reference in New Issue
Block a user