provider lifecycle hardenings

This commit is contained in:
Fabian Freund
2026-05-06 18:32:45 +02:00
parent d5f977a3d2
commit fee15cb8d2
25 changed files with 246 additions and 94 deletions
@@ -28,7 +28,8 @@ part 'fetch_articles.g.dart';
class FetchArticlesController extends _$FetchArticlesController {
Future<void> fetchAllArticles() async {
state = const AsyncLoading();
state = await AsyncValue.guard(() async {
final result = await AsyncValue.guard(() async {
final feedRepository = ref.read(feedRepositoryProvider.notifier);
final feeds = await feedRepository.getAllFeeds();
@@ -52,11 +53,18 @@ class FetchArticlesController extends _$FetchArticlesController {
}).toList(),
);
});
if (!ref.mounted) {
return;
}
state = result;
}
Future<void> fetchFeedArticles(Uri uri) async {
state = const AsyncLoading();
state = await AsyncValue.guard(() async {
final result = await AsyncValue.guard(() async {
final feedRepository = ref.read(feedRepositoryProvider.notifier);
final result = await ref.read(feedReaderProvider.notifier).parseFeed(uri);
@@ -64,6 +72,12 @@ class FetchArticlesController extends _$FetchArticlesController {
await feedRepository.upsertArticles(result.articleData);
await feedRepository.touchFeedFetched(uri);
});
if (!ref.mounted) {
return;
}
state = result;
}
@override
@@ -42,7 +42,7 @@ final class FetchArticlesControllerProvider
}
String _$fetchArticlesControllerHash() =>
r'5dcb9de003bc911d365c6a8ef107bf1bf446755b';
r'b8a1813f3497af731f20a48693b700eb3d9aeceb';
abstract class _$FetchArticlesController extends $Notifier<AsyncValue<void>> {
AsyncValue<void> build();