Skip to content

Commit 4da0c34

Browse files
committed
feat: enhance archived headlines view with undo delete functionality and snackbar notification
1 parent 0b56d3f commit 4da0c34

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

lib/content_management/view/archived_headlines_page.dart

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:flutter_news_app_web_dashboard_full_source_code/content_manageme
77
import 'package:flutter_news_app_web_dashboard_full_source_code/content_management/bloc/content_management_bloc.dart';
88
import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/app_localizations.dart';
99
import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/l10n.dart';
10+
import 'package:flutter_news_app_web_dashboard_full_source_code/shared/extensions/extensions.dart';
1011
import 'package:intl/intl.dart';
1112
import 'package:ui_kit/ui_kit.dart';
1213

@@ -38,15 +39,35 @@ class _ArchivedHeadlinesView extends StatelessWidget {
3839
padding: const EdgeInsets.all(AppSpacing.lg),
3940
child: BlocListener<ArchivedHeadlinesBloc, ArchivedHeadlinesState>(
4041
listenWhen: (previous, current) =>
41-
previous.status != current.status ||
42+
previous.lastDeletedHeadline != current.lastDeletedHeadline ||
4243
previous.restoredHeadline != current.restoredHeadline,
4344
listener: (context, state) {
44-
if (state.status == ArchivedHeadlinesStatus.success &&
45-
state.restoredHeadline != null) {
45+
if (state.restoredHeadline != null) {
4646
context.read<ContentManagementBloc>().add(
4747
const LoadHeadlinesRequested(limit: kDefaultRowsPerPage),
4848
);
4949
}
50+
if (state.lastDeletedHeadline != null) {
51+
final truncatedTitle =
52+
state.lastDeletedHeadline!.title.truncate(30);
53+
ScaffoldMessenger.of(context)
54+
..hideCurrentSnackBar()
55+
..showSnackBar(
56+
SnackBar(
57+
content: Text(
58+
l10n.headlineDeleted(truncatedTitle),
59+
),
60+
action: SnackBarAction(
61+
label: l10n.undo,
62+
onPressed: () {
63+
context
64+
.read<ArchivedHeadlinesBloc>()
65+
.add(const UndoDeleteHeadlineRequested());
66+
},
67+
),
68+
),
69+
);
70+
}
5071
},
5172
child: BlocBuilder<ArchivedHeadlinesBloc, ArchivedHeadlinesState>(
5273
builder: (context, state) {

0 commit comments

Comments
 (0)