File tree Expand file tree Collapse file tree 7 files changed +46
-10
lines changed Expand file tree Collapse file tree 7 files changed +46
-10
lines changed Original file line number Diff line number Diff line change 1- import 'package:flutter/foundation.dart' show kIsWeb;
21import 'package:flutter/material.dart' ;
32import 'package:flutter_bloc/flutter_bloc.dart' ;
43import 'package:ht_auth_api/ht_auth_api.dart' ;
@@ -16,7 +15,9 @@ import 'package:ht_main/app/config/config.dart' as app_config;
1615import 'package:ht_main/app/services/demo_data_migration_service.dart' ;
1716import 'package:ht_main/bloc_observer.dart' ;
1817import 'package:ht_shared/ht_shared.dart' ;
18+ import 'package:ht_ui_kit/ht_ui_kit.dart' ;
1919import 'package:logging/logging.dart' ;
20+ import 'package:timeago/timeago.dart' as timeago;
2021
2122Future <Widget > bootstrap (
2223 app_config.AppConfig appConfig,
@@ -25,6 +26,9 @@ Future<Widget> bootstrap(
2526 WidgetsFlutterBinding .ensureInitialized ();
2627 Bloc .observer = const AppBlocObserver ();
2728
29+ timeago.setLocaleMessages ('en' , EnTimeagoMessages ());
30+ timeago.setLocaleMessages ('ar' , ArTimeagoMessages ());
31+
2832 final logger = Logger ('bootstrap' );
2933
3034 final kvStorage = await HtKvStorageSharedPreferences .getInstance ();
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import 'package:ht_main/app/bloc/app_bloc.dart';
99import 'package:ht_main/headlines-search/bloc/headlines_search_bloc.dart' ;
1010// import 'package:ht_main/headlines-search/widgets/country_item_widget.dart';
1111import 'package:ht_main/headlines-search/widgets/source_item_widget.dart' ;
12+ import 'package:ht_main/headlines-search/widgets/topic_item_widget.dart' ;
1213import 'package:ht_main/l10n/l10n.dart' ;
1314import 'package:ht_main/router/routes.dart' ;
1415import 'package:ht_main/shared/extensions/content_type_extensions.dart' ;
@@ -332,8 +333,7 @@ class _HeadlinesSearchViewState extends State<_HeadlinesSearchView> {
332333 }
333334 return tile;
334335 } else if (feedItem is Topic ) {
335- // TODO(user): Create a TopicItemWidget similar to CategoryItemWidget
336- return ListTile (title: Text (feedItem.name));
336+ return TopicItemWidget (topic: feedItem);
337337 } else if (feedItem is Source ) {
338338 return SourceItemWidget (source: feedItem);
339339 } else if (feedItem is Ad ) {
Original file line number Diff line number Diff line change 1+ import 'package:flutter/material.dart' ;
2+ import 'package:go_router/go_router.dart' ;
3+ import 'package:ht_main/entity_details/view/entity_details_page.dart' ;
4+ import 'package:ht_main/router/routes.dart' ;
5+ import 'package:ht_shared/ht_shared.dart' ;
6+
7+ /// A simple widget to display a Topic search result.
8+ class TopicItemWidget extends StatelessWidget {
9+ const TopicItemWidget ({required this .topic, super .key});
10+
11+ final Topic topic;
12+
13+ @override
14+ Widget build (BuildContext context) {
15+ return ListTile (
16+ title: Text (topic.name),
17+ subtitle: topic.description.isNotEmpty
18+ ? Text (
19+ topic.description,
20+ maxLines: 2 ,
21+ overflow: TextOverflow .ellipsis,
22+ )
23+ : null ,
24+ onTap: () {
25+ context.push (
26+ Routes .topicDetails,
27+ extra: EntityDetailsPageArguments (entity: topic),
28+ );
29+ },
30+ );
31+ }
32+ }
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import 'package:ht_main/entity_details/view/entity_details_page.dart';
44import 'package:ht_main/router/routes.dart' ;
55import 'package:ht_shared/ht_shared.dart' ;
66import 'package:ht_ui_kit/ht_ui_kit.dart' ;
7+ import 'package:timeago/timeago.dart' as timeago;
78
89/// {@template headline_tile_image_start}
910/// A shared widget to display a headline item with a small image at the start.
@@ -136,8 +137,7 @@ class _HeadlineMetadataRow extends StatelessWidget {
136137
137138 @override
138139 Widget build (BuildContext context) {
139- // TODO(anyone): Use a proper timeago library.
140- final formattedDate = headline.createdAt.toString ();
140+ final formattedDate = timeago.format (headline.createdAt);
141141
142142 // Use bodySmall for a reasonable base size, with muted accent color
143143 final metadataTextStyle = textTheme.bodySmall? .copyWith (
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import 'package:ht_main/entity_details/view/entity_details_page.dart';
44import 'package:ht_main/router/routes.dart' ;
55import 'package:ht_shared/ht_shared.dart' ;
66import 'package:ht_ui_kit/ht_ui_kit.dart' ;
7+ import 'package:timeago/timeago.dart' as timeago;
78
89/// {@template headline_tile_image_top}
910/// A shared widget to display a headline item with a large image at the top.
@@ -147,8 +148,7 @@ class _HeadlineMetadataRow extends StatelessWidget {
147148
148149 @override
149150 Widget build (BuildContext context) {
150- // TODO(anyone): Use a proper timeago library.
151- final formattedDate = headline.createdAt.toString ();
151+ final formattedDate = timeago.format (headline.createdAt);
152152
153153 // Use bodySmall for a reasonable base size, with muted accent color
154154 final metadataTextStyle = textTheme.bodySmall? .copyWith (
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import 'package:ht_main/entity_details/view/entity_details_page.dart';
44import 'package:ht_main/router/routes.dart' ;
55import 'package:ht_shared/ht_shared.dart' ;
66import 'package:ht_ui_kit/ht_ui_kit.dart' ;
7+ import 'package:timeago/timeago.dart' as timeago;
78
89/// {@template headline_tile_text_only}
910/// A widget to display a headline item with text only.
@@ -108,8 +109,7 @@ class _HeadlineMetadataRow extends StatelessWidget {
108109
109110 @override
110111 Widget build (BuildContext context) {
111- // TODO(anyone): Use a proper timeago library.
112- final formattedDate = headline.createdAt.toString ();
112+ final formattedDate = timeago.format (headline.createdAt);
113113
114114 // Use bodySmall for a reasonable base size, with muted accent color
115115 final metadataTextStyle = textTheme.bodySmall? .copyWith (
Original file line number Diff line number Diff line change @@ -416,7 +416,7 @@ packages:
416416 description:
417417 path: "."
418418 ref: HEAD
419- resolved-ref: abef81e5294d70ace82d3e87f1efc94fca6a8445
419+ resolved-ref: "7945773edb4251d294071820c4ce1b6332f032ec"
420420 url: "https://github.com/headlines-toolkit/ht-data-inmemory.git"
421421 source: git
422422 version: "0.0.0"
You can’t perform that action at this time.
0 commit comments