Skip to content

Commit 9e2fb92

Browse files
committed
fix(archived-topics): update state with restored topic and trigger relevant events
1 parent 5dba3cf commit 9e2fb92

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

lib/content_management/bloc/archived_topics/archived_topics_bloc.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,11 @@ class ArchivedTopicsBloc
7474
emit(state.copyWith(topics: updatedTopics));
7575

7676
try {
77-
await _topicsRepository.update(
77+
final restoredTopic = await _topicsRepository.update(
7878
id: event.id,
7979
item: topicToRestore.copyWith(status: ContentStatus.active),
8080
);
81+
emit(state.copyWith(restoredTopic: restoredTopic));
8182
} on HttpException catch (e) {
8283
emit(state.copyWith(topics: originalTopics, exception: e));
8384
} catch (e) {

lib/content_management/view/archived_topics_page.dart

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import 'package:data_table_2/data_table_2.dart';
44
import 'package:flutter/material.dart';
55
import 'package:flutter_bloc/flutter_bloc.dart';
66
import 'package:flutter_news_app_web_dashboard_full_source_code/content_management/bloc/archived_topics/archived_topics_bloc.dart';
7+
import 'package:flutter_news_app_web_dashboard_full_source_code/content_management/bloc/content_management_bloc.dart';
8+
import 'package:flutter_news_app_web_dashboard_full_source_code/dashboard/bloc/dashboard_bloc.dart';
79
import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/app_localizations.dart';
810
import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/l10n.dart';
911
import 'package:intl/intl.dart';
@@ -35,10 +37,21 @@ class _ArchivedTopicsView extends StatelessWidget {
3537
),
3638
body: Padding(
3739
padding: const EdgeInsets.all(AppSpacing.lg),
38-
child: BlocBuilder<ArchivedTopicsBloc, ArchivedTopicsState>(
39-
builder: (context, state) {
40-
if (state.status == ArchivedTopicsStatus.loading &&
41-
state.topics.isEmpty) {
40+
child: BlocListener<ArchivedTopicsBloc, ArchivedTopicsState>(
41+
listenWhen: (previous, current) =>
42+
previous.restoredTopic != current.restoredTopic,
43+
listener: (context, state) {
44+
if (state.restoredTopic != null) {
45+
context
46+
.read<ContentManagementBloc>()
47+
.add(const LoadTopicsRequested(limit: kDefaultRowsPerPage));
48+
context.read<DashboardBloc>().add( DashboardSummaryLoaded());
49+
}
50+
},
51+
child: BlocBuilder<ArchivedTopicsBloc, ArchivedTopicsState>(
52+
builder: (context, state) {
53+
if (state.status == ArchivedTopicsStatus.loading &&
54+
state.topics.isEmpty) {
4255
return LoadingStateWidget(
4356
icon: Icons.topic,
4457
headline: l10n.loadingArchivedTopics,
@@ -116,7 +129,8 @@ class _ArchivedTopicsView extends StatelessWidget {
116129
),
117130
],
118131
);
119-
},
132+
},
133+
),
120134
),
121135
),
122136
);

topics_event.dart

Whitespace-only changes.

0 commit comments

Comments
 (0)