background fetch running

This commit is contained in:
Fabian Freund
2025-03-05 14:27:13 +01:00
parent 20bdc4df3e
commit 70d1c1b50e
62 changed files with 898 additions and 173 deletions
@@ -1,3 +1,4 @@
import 'package:lensai/core/logger.dart';
import 'package:lensai/features/web_feed/domain/repositories/feed_repository.dart';
import 'package:lensai/features/web_feed/domain/services/feed_reader.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -14,17 +15,25 @@ class FetchArticlesController extends _$FetchArticlesController {
await Future.wait(
feeds.map((feed) async {
final result = await ref
.read(feedReaderProvider.notifier)
.parseFeed(feed.url);
try {
final result = await ref
.read(feedReaderProvider.notifier)
.parseFeed(feed.url);
await ref
.read(feedRepositoryProvider.notifier)
.upsertArticles(result.articleData);
await ref
.read(feedRepositoryProvider.notifier)
.upsertArticles(result.articleData);
await ref
.read(feedRepositoryProvider.notifier)
.touchFeedFetched(feed.url);
await ref
.read(feedRepositoryProvider.notifier)
.touchFeedFetched(feed.url);
} catch (e, s) {
logger.e(
'Failed fetching feed ${feed.url}',
error: e,
stackTrace: s,
);
}
}).toList(),
);
});
@@ -7,7 +7,7 @@ part of 'fetch_articles.dart';
// **************************************************************************
String _$fetchArticlesControllerHash() =>
r'63da7f6ba9eab28aebff4c60d98e2f2a404c5138';
r'7604d9352da886624c3cf6862b89c397edda1f28';
/// See also [FetchArticlesController].
@ProviderFor(FetchArticlesController)
@@ -6,8 +6,10 @@ import 'package:lensai/extensions/nullable.dart';
import 'package:lensai/extensions/uri.dart';
import 'package:lensai/features/web_feed/data/models/feed_article.dart';
import 'package:lensai/features/web_feed/data/models/feed_article_query_result.dart';
import 'package:lensai/features/web_feed/data/models/feed_link.dart';
import 'package:lensai/features/web_feed/domain/providers/article_filter.dart';
import 'package:lensai/features/web_feed/domain/repositories/feed_repository.dart';
import 'package:lensai/features/web_feed/extensions/atom.dart';
import 'package:lensai/features/web_feed/extensions/feed_article.dart';
import 'package:lensai/features/web_feed/presentation/widgets/authors_horizontal_list.dart';
import 'package:lensai/features/web_feed/presentation/widgets/tags_horizontal_list.dart';
@@ -52,7 +54,12 @@ class FeedArticleCard extends HookConsumerWidget {
Row(
children: [
UrlIcon([
article.icon ?? article.feedId.base,
article.icon ??
article.links
?.getRelation(FeedLinkRelation.alternate)
?.uri ??
article.siteLink ??
article.feedId.base,
], iconSize: 34.0),
const SizedBox(width: 12.0),
Expanded(