@@ -34,6 +34,7 @@ class _ArchivedHeadlinesView extends StatelessWidget {
3434 @override
3535 Widget build (BuildContext context) {
3636 final l10n = AppLocalizationsX (context).l10n;
37+ final pendingDeletionsService = context.read <PendingDeletionsService >();
3738 return Scaffold (
3839 appBar: AppBar (
3940 title: Text (l10n.archivedHeadlines),
@@ -42,10 +43,9 @@ class _ArchivedHeadlinesView extends StatelessWidget {
4243 padding: const EdgeInsets .all (AppSpacing .lg),
4344 child: BlocListener <ArchivedHeadlinesBloc , ArchivedHeadlinesState >(
4445 listenWhen: (previous, current) =>
45- previous.pendingDeletions.length !=
46- current.pendingDeletions.length ||
46+ previous.lastPendingDeletionId != current.lastPendingDeletionId ||
4747 previous.restoredHeadline != current.restoredHeadline ||
48- previous.lastPendingDeletionId != current.lastPendingDeletionId ,
48+ previous.snackbarHeadlineTitle != current.snackbarHeadlineTitle ,
4949 listener: (context, state) {
5050 if (state.restoredHeadline != null ) {
5151 // When a headline is restored, refresh the main headlines list.
@@ -59,33 +59,25 @@ class _ArchivedHeadlinesView extends StatelessWidget {
5959 }
6060
6161 // Show snackbar for pending deletions.
62- if (state.lastPendingDeletionId != null &&
63- state.pendingDeletions.containsKey (
64- state.lastPendingDeletionId,
65- )) {
66- final headline =
67- state.pendingDeletions[state.lastPendingDeletionId];
68- if (headline != null ) {
69- final truncatedTitle = headline.title.truncate (30 );
70- ScaffoldMessenger .of (context)
71- ..hideCurrentSnackBar ()
72- ..showSnackBar (
73- SnackBar (
74- content: Text (
75- l10n.headlineDeleted (truncatedTitle),
76- ),
77- action: SnackBarAction (
78- label: l10n.undo,
79- onPressed: () {
80- // Dispatch UndoDeleteHeadlineRequested to the BLoC.
81- context.read <ArchivedHeadlinesBloc >().add (
82- UndoDeleteHeadlineRequested (headline.id),
83- );
84- },
85- ),
62+ if (state.snackbarHeadlineTitle != null ) {
63+ final headlineId = state.lastPendingDeletionId! ;
64+ final truncatedTitle = state.snackbarHeadlineTitle! .truncate (30 );
65+ ScaffoldMessenger .of (context)
66+ ..hideCurrentSnackBar ()
67+ ..showSnackBar (
68+ SnackBar (
69+ content: Text (
70+ l10n.headlineDeleted (truncatedTitle),
8671 ),
87- );
88- }
72+ action: SnackBarAction (
73+ label: l10n.undo,
74+ onPressed: () {
75+ // Directly call undoDeletion on the service.
76+ pendingDeletionsService.undoDeletion (headlineId);
77+ },
78+ ),
79+ ),
80+ );
8981 }
9082 },
9183 child: BlocBuilder <ArchivedHeadlinesBloc , ArchivedHeadlinesState >(
0 commit comments