Skip to content

Commit 064aac5

Browse files
committed
feat(account): Use new headline tiles
- Implemented image style setting - Added new headline tile widgets - Uses GoRouter for navigation
1 parent ddc0f8d commit 064aac5

File tree

1 file changed

+58
-15
lines changed

1 file changed

+58
-15
lines changed

lib/account/view/saved_headlines_page.dart

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_bloc/flutter_bloc.dart';
3+
import 'package:go_router/go_router.dart'; // Added GoRouter
34
import 'package:ht_main/account/bloc/account_bloc.dart';
4-
import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart';
5+
import 'package:ht_main/app/bloc/app_bloc.dart'; // Added AppBloc
6+
// HeadlineItemWidget import removed
57
import 'package:ht_main/l10n/l10n.dart';
68
import 'package:ht_main/router/routes.dart';
7-
import 'package:ht_main/shared/widgets/widgets.dart';
9+
import 'package:ht_main/shared/shared.dart'; // Imports new headline tiles
10+
import 'package:ht_shared/ht_shared.dart' show Headline, HeadlineImageStyle; // Added HeadlineImageStyle
811

912
/// {@template saved_headlines_page}
1013
/// Displays the list of headlines saved by the user.
@@ -68,20 +71,60 @@ class SavedHeadlinesPage extends StatelessWidget {
6871
separatorBuilder: (context, index) => const Divider(height: 1),
6972
itemBuilder: (context, index) {
7073
final headline = savedHeadlines[index];
71-
return HeadlineItemWidget(
72-
headline: headline,
73-
targetRouteName: Routes.accountArticleDetailsName,
74-
trailing: IconButton(
75-
// Changed from trailingWidget
76-
icon: const Icon(Icons.delete_outline),
77-
tooltip: 'Remove from saved', // Placeholder
78-
onPressed: () {
79-
context.read<AccountBloc>().add(
80-
AccountSaveHeadlineToggled(headline: headline),
81-
);
82-
},
83-
),
74+
final imageStyle = context
75+
.watch<AppBloc>()
76+
.state
77+
.settings
78+
.feedPreferences
79+
.headlineImageStyle;
80+
81+
final trailingButton = IconButton(
82+
icon: const Icon(Icons.delete_outline),
83+
tooltip: l10n.headlineDetailsRemoveFromSavedTooltip, // Use l10n
84+
onPressed: () {
85+
context.read<AccountBloc>().add(
86+
AccountSaveHeadlineToggled(headline: headline),
87+
);
88+
},
8489
);
90+
91+
Widget tile;
92+
switch (imageStyle) {
93+
case HeadlineImageStyle.hidden:
94+
tile = HeadlineTileTextOnly(
95+
headline: headline,
96+
onHeadlineTap: () => context.goNamed(
97+
Routes.accountArticleDetailsName,
98+
pathParameters: {'id': headline.id},
99+
extra: headline,
100+
),
101+
trailing: trailingButton,
102+
);
103+
break;
104+
case HeadlineImageStyle.smallThumbnail:
105+
tile = HeadlineTileImageStart(
106+
headline: headline,
107+
onHeadlineTap: () => context.goNamed(
108+
Routes.accountArticleDetailsName,
109+
pathParameters: {'id': headline.id},
110+
extra: headline,
111+
),
112+
trailing: trailingButton,
113+
);
114+
break;
115+
case HeadlineImageStyle.largeThumbnail:
116+
tile = HeadlineTileImageTop(
117+
headline: headline,
118+
onHeadlineTap: () => context.goNamed(
119+
Routes.accountArticleDetailsName,
120+
pathParameters: {'id': headline.id},
121+
extra: headline,
122+
),
123+
trailing: trailingButton,
124+
);
125+
break;
126+
}
127+
return tile;
85128
},
86129
);
87130
},

0 commit comments

Comments
 (0)