major update

This commit is contained in:
Fabian Freund
2025-03-03 15:15:05 +01:00
parent 200c82a442
commit 20bdc4df3e
103 changed files with 2664 additions and 783 deletions
@@ -1,6 +1,4 @@
import 'package:lensai/extensions/nullable.dart';
import 'package:lensai/features/web_feed/data/database/database.dart';
import 'package:lensai/features/web_feed/data/models/feed_filter.dart';
import 'package:lensai/features/web_feed/data/models/feed_article.dart';
import 'package:lensai/features/web_feed/data/providers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -13,11 +11,11 @@ class FeedRepository extends _$FeedRepository {
return ref.read(feedDatabaseProvider).feedDao.getFeeds().get();
}
Future<void> touchFeedFetched(Uri url) {
Future<void> touchFeedFetched(Uri feedId) {
return ref
.read(feedDatabaseProvider)
.feedDao
.updateFeedFetched(url, DateTime.now());
.updateFeedFetched(feedId, DateTime.now());
}
Future<void> upsertFeed(FeedData feedData) {
@@ -28,8 +26,8 @@ class FeedRepository extends _$FeedRepository {
return ref.read(feedDatabaseProvider).articleDao.upsertArticles(articles);
}
Future<int> deleteFeed(Uri url) {
return ref.read(feedDatabaseProvider).feedDao.deleteFeed(url);
Future<int> deleteFeed(Uri feedId) {
return ref.read(feedDatabaseProvider).feedDao.deleteFeed(feedId);
}
Future<void> touchArticleRead(String articleId) {
@@ -50,46 +48,20 @@ class FeedRepository extends _$FeedRepository {
return ref.read(feedDatabaseProvider).feedDao.getFeeds().watch();
}
Stream<List<FeedArticle>> watchFeedArticles(
FeedFilter filter, {
int snippetLength = 120,
String matchPrefix = '***',
String matchSuffix = '***',
String ellipsis = '',
}) {
final stream =
filter.query.isNotEmpty
? ref
.read(feedDatabaseProvider)
.articleDao
.queryArticles(
matchPrefix: matchPrefix,
matchSuffix: matchSuffix,
ellipsis: ellipsis,
snippetLength: snippetLength,
searchString: filter.query!,
feedId: filter.feedId,
)
.watch()
: ref
.read(feedDatabaseProvider)
.articleDao
.getFeedArticles(filter.feedId)
.watch();
Stream<FeedData?> watchFeed(Uri feedId) {
return ref
.read(feedDatabaseProvider)
.feedDao
.getFeed(feedId)
.watchSingleOrNull();
}
if (filter.tags.isNotEmpty) {
return stream.map(
(articles) =>
articles
.where(
(article) =>
article.tags?.toSet().containsAll(filter.tags!) ?? false,
)
.toList(),
);
} else {
return stream;
}
Stream<List<FeedArticle>> watchFeedArticles(Uri? feedId) {
return ref
.read(feedDatabaseProvider)
.articleDao
.getFeedArticles(feedId)
.watch();
}
Stream<FeedArticle?> watchArticle(String articleId) {
@@ -6,7 +6,7 @@ part of 'feed_repository.dart';
// RiverpodGenerator
// **************************************************************************
String _$feedRepositoryHash() => r'6a050933a6a4eafbe76a66262e1b64bd838a1078';
String _$feedRepositoryHash() => r'805cc26890b0d43576a1eab0ecb5851b6649d7b7';
/// See also [FeedRepository].
@ProviderFor(FeedRepository)