migration done
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
|
||||
class FeedDataConverter extends JsonConverter<FeedData, Map<String, dynamic>> {
|
||||
const FeedDataConverter();
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/daos/article.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article_query_result.dart';
|
||||
|
||||
part 'article.g.dart';
|
||||
|
||||
@DriftAccessor()
|
||||
class ArticleDao extends DatabaseAccessor<FeedDatabase> with _$ArticleDaoMixin {
|
||||
class ArticleDao extends DatabaseAccessor<FeedDatabase> with $ArticleDaoMixin {
|
||||
ArticleDao(super.attachedDatabase);
|
||||
|
||||
Selectable<FeedArticle> getFeedArticles(Uri? url) {
|
||||
@@ -152,7 +152,7 @@ class ArticleDao extends DatabaseAccessor<FeedDatabase> with _$ArticleDaoMixin {
|
||||
final ftsQuery = db.buildFtsQuery(searchString);
|
||||
|
||||
if (ftsQuery.isNotEmpty) {
|
||||
return db.queryArticlesFullContent(
|
||||
return db.definitionsDrift.queryArticlesFullContent(
|
||||
feedId: feedId?.toString(),
|
||||
query: ftsQuery,
|
||||
snippetLength: snippetLength,
|
||||
@@ -161,7 +161,7 @@ class ArticleDao extends DatabaseAccessor<FeedDatabase> with _$ArticleDaoMixin {
|
||||
ellipsis: ellipsis,
|
||||
);
|
||||
} else {
|
||||
return db.queryArticlesBasic(
|
||||
return db.definitionsDrift.queryArticlesBasic(
|
||||
feedId: feedId?.toString(),
|
||||
query: db.buildLikeQuery(searchString),
|
||||
);
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// dart format width=80
|
||||
// ignore_for_file: type=lint
|
||||
import 'package:drift/drift.dart' as i0;
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart' as i1;
|
||||
|
||||
mixin $ArticleDaoMixin on i0.DatabaseAccessor<i1.FeedDatabase> {}
|
||||
@@ -1,6 +0,0 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'article.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
mixin _$ArticleDaoMixin on DatabaseAccessor<FeedDatabase> {}
|
||||
@@ -18,12 +18,12 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/daos/feed.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
|
||||
part 'feed.g.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
|
||||
@DriftAccessor()
|
||||
class FeedDao extends DatabaseAccessor<FeedDatabase> with _$FeedDaoMixin {
|
||||
class FeedDao extends DatabaseAccessor<FeedDatabase> with $FeedDaoMixin {
|
||||
FeedDao(super.attachedDatabase);
|
||||
|
||||
Selectable<FeedData> getFeeds() {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// dart format width=80
|
||||
// ignore_for_file: type=lint
|
||||
import 'package:drift/drift.dart' as i0;
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart' as i1;
|
||||
|
||||
mixin $FeedDaoMixin on i0.DatabaseAccessor<i1.FeedDatabase> {}
|
||||
@@ -1,6 +0,0 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'feed.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
mixin _$FeedDaoMixin on DatabaseAccessor<FeedDatabase> {}
|
||||
@@ -18,23 +18,13 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:weblibre/data/database/converters/uri.dart';
|
||||
import 'package:weblibre/features/search/domain/fts_tokenizer.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/converters/feed_authors.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/converters/feed_categories.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/converters/feed_links.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/daos/article.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/daos/feed.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article_query_result.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_author.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_category.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_link.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.drift.dart';
|
||||
|
||||
part 'database.g.dart';
|
||||
|
||||
@DriftDatabase(include: {'database.drift'}, daos: [ArticleDao, FeedDao])
|
||||
class FeedDatabase extends _$FeedDatabase with TrigramQueryBuilderMixin {
|
||||
@DriftDatabase(include: {'definitions.drift'}, daos: [ArticleDao, FeedDao])
|
||||
class FeedDatabase extends $FeedDatabase with TrigramQueryBuilderMixin {
|
||||
@override
|
||||
final int schemaVersion = 1;
|
||||
|
||||
@@ -47,7 +37,7 @@ class FeedDatabase extends _$FeedDatabase with TrigramQueryBuilderMixin {
|
||||
MigrationStrategy get migration => MigrationStrategy(
|
||||
beforeOpen: (details) async {
|
||||
await customStatement('PRAGMA foreign_keys = ON;');
|
||||
await optimizeFtsIndex();
|
||||
await definitionsDrift.optimizeFtsIndex();
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
// dart format width=80
|
||||
// ignore_for_file: type=lint
|
||||
import 'package:drift/drift.dart' as i0;
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart'
|
||||
as i1;
|
||||
import 'package:weblibre/features/web_feed/data/database/daos/article.dart'
|
||||
as i2;
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart' as i3;
|
||||
import 'package:weblibre/features/web_feed/data/database/daos/feed.dart' as i4;
|
||||
import 'package:drift/internal/modular.dart' as i5;
|
||||
import 'package:sqlite3/common.dart' as i6;
|
||||
|
||||
abstract class $FeedDatabase extends i0.GeneratedDatabase {
|
||||
$FeedDatabase(i0.QueryExecutor e) : super(e);
|
||||
$FeedDatabaseManager get managers => $FeedDatabaseManager(this);
|
||||
late final i1.Feed feed = i1.Feed(this);
|
||||
late final i1.Article article = i1.Article(this);
|
||||
late final i1.ArticleView articleView = i1.ArticleView(this);
|
||||
late final i1.ArticleFts articleFts = i1.ArticleFts(this);
|
||||
late final i2.ArticleDao articleDao = i2.ArticleDao(this as i3.FeedDatabase);
|
||||
late final i4.FeedDao feedDao = i4.FeedDao(this as i3.FeedDatabase);
|
||||
i1.DefinitionsDrift get definitionsDrift => i5.ReadDatabaseContainer(
|
||||
this,
|
||||
).accessor<i1.DefinitionsDrift>(i1.DefinitionsDrift.new);
|
||||
@override
|
||||
Iterable<i0.TableInfo<i0.Table, Object?>> get allTables =>
|
||||
allSchemaEntities.whereType<i0.TableInfo<i0.Table, Object?>>();
|
||||
@override
|
||||
List<i0.DatabaseSchemaEntity> get allSchemaEntities => [
|
||||
feed,
|
||||
article,
|
||||
articleView,
|
||||
i1.articleFeedId,
|
||||
articleFts,
|
||||
i1.articleAfterInsert,
|
||||
i1.articleAfterDelete,
|
||||
i1.articleAfterUpdate,
|
||||
];
|
||||
@override
|
||||
i0.StreamQueryUpdateRules get streamUpdateRules =>
|
||||
const i0.StreamQueryUpdateRules([
|
||||
i0.WritePropagation(
|
||||
on: i0.TableUpdateQuery.onTableName(
|
||||
'feed',
|
||||
limitUpdateKind: i0.UpdateKind.delete,
|
||||
),
|
||||
result: [i0.TableUpdate('article', kind: i0.UpdateKind.delete)],
|
||||
),
|
||||
i0.WritePropagation(
|
||||
on: i0.TableUpdateQuery.onTableName(
|
||||
'article',
|
||||
limitUpdateKind: i0.UpdateKind.insert,
|
||||
),
|
||||
result: [i0.TableUpdate('article_fts', kind: i0.UpdateKind.insert)],
|
||||
),
|
||||
i0.WritePropagation(
|
||||
on: i0.TableUpdateQuery.onTableName(
|
||||
'article',
|
||||
limitUpdateKind: i0.UpdateKind.delete,
|
||||
),
|
||||
result: [i0.TableUpdate('article_fts', kind: i0.UpdateKind.insert)],
|
||||
),
|
||||
i0.WritePropagation(
|
||||
on: i0.TableUpdateQuery.onTableName(
|
||||
'article',
|
||||
limitUpdateKind: i0.UpdateKind.update,
|
||||
),
|
||||
result: [i0.TableUpdate('article_fts', kind: i0.UpdateKind.insert)],
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
class $FeedDatabaseManager {
|
||||
final $FeedDatabase _db;
|
||||
$FeedDatabaseManager(this._db);
|
||||
i1.$FeedTableManager get feed => i1.$FeedTableManager(_db, _db.feed);
|
||||
i1.$ArticleTableManager get article =>
|
||||
i1.$ArticleTableManager(_db, _db.article);
|
||||
i1.$ArticleFtsTableManager get articleFts =>
|
||||
i1.$ArticleFtsTableManager(_db, _db.articleFts);
|
||||
}
|
||||
|
||||
extension DefineFunctions on i6.CommonDatabase {
|
||||
void defineFunctions({
|
||||
required String Function(int, String?) lexoRankNext,
|
||||
required String Function(int, String?) lexoRankPrevious,
|
||||
required String Function(String?, String?) lexoRankReorderAfter,
|
||||
required String Function(String?, String?) lexoRankReorderBefore,
|
||||
}) {
|
||||
createFunction(
|
||||
functionName: 'lexo_rank_next',
|
||||
argumentCount: const i6.AllowedArgumentCount(2),
|
||||
function: (args) {
|
||||
final arg0 = args[0] as int;
|
||||
final arg1 = args[1] as String?;
|
||||
return lexoRankNext(arg0, arg1);
|
||||
},
|
||||
);
|
||||
createFunction(
|
||||
functionName: 'lexo_rank_previous',
|
||||
argumentCount: const i6.AllowedArgumentCount(2),
|
||||
function: (args) {
|
||||
final arg0 = args[0] as int;
|
||||
final arg1 = args[1] as String?;
|
||||
return lexoRankPrevious(arg0, arg1);
|
||||
},
|
||||
);
|
||||
createFunction(
|
||||
functionName: 'lexo_rank_reorder_after',
|
||||
argumentCount: const i6.AllowedArgumentCount(2),
|
||||
function: (args) {
|
||||
final arg0 = args[0] as String?;
|
||||
final arg1 = args[1] as String?;
|
||||
return lexoRankReorderAfter(arg0, arg1);
|
||||
},
|
||||
);
|
||||
createFunction(
|
||||
functionName: 'lexo_rank_reorder_before',
|
||||
argumentCount: const i6.AllowedArgumentCount(2),
|
||||
function: (args) {
|
||||
final arg0 = args[0] as String?;
|
||||
final arg1 = args[1] as String?;
|
||||
return lexoRankReorderBefore(arg0, arg1);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -21,7 +21,7 @@ import 'package:copy_with_extension/copy_with_extension.dart';
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:fast_equatable/fast_equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_author.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_category.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_link.dart';
|
||||
|
||||
@@ -43,12 +43,13 @@ abstract class _$FeedArticleCWProxy {
|
||||
|
||||
FeedArticle siteLink(Uri? siteLink);
|
||||
|
||||
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `FeedArticle(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
||||
/// Creates a new instance with the provided field values.
|
||||
/// Passing `null` to a nullable field nullifies it, while `null` for a non-nullable field is ignored. To update a single field use `FeedArticle(...).copyWith.fieldName(value)`.
|
||||
///
|
||||
/// Usage
|
||||
/// Example:
|
||||
/// ```dart
|
||||
/// FeedArticle(...).copyWith(id: 12, name: "My name")
|
||||
/// ````
|
||||
/// ```
|
||||
FeedArticle call({
|
||||
String id,
|
||||
Uri feedId,
|
||||
@@ -71,79 +72,81 @@ abstract class _$FeedArticleCWProxy {
|
||||
});
|
||||
}
|
||||
|
||||
/// Proxy class for `copyWith` functionality. This is a callable class and can be used as follows: `instanceOfFeedArticle.copyWith(...)`. Additionally contains functions for specific fields e.g. `instanceOfFeedArticle.copyWith.fieldName(...)`
|
||||
/// Callable proxy for `copyWith` functionality.
|
||||
/// Use as `instanceOfFeedArticle.copyWith(...)` or call `instanceOfFeedArticle.copyWith.fieldName(value)` for a single field.
|
||||
class _$FeedArticleCWProxyImpl implements _$FeedArticleCWProxy {
|
||||
const _$FeedArticleCWProxyImpl(this._value);
|
||||
|
||||
final FeedArticle _value;
|
||||
|
||||
@override
|
||||
FeedArticle id(String id) => this(id: id);
|
||||
FeedArticle id(String id) => call(id: id);
|
||||
|
||||
@override
|
||||
FeedArticle feedId(Uri feedId) => this(feedId: feedId);
|
||||
FeedArticle feedId(Uri feedId) => call(feedId: feedId);
|
||||
|
||||
@override
|
||||
FeedArticle fetched(DateTime fetched) => this(fetched: fetched);
|
||||
FeedArticle fetched(DateTime fetched) => call(fetched: fetched);
|
||||
|
||||
@override
|
||||
FeedArticle created(DateTime? created) => this(created: created);
|
||||
FeedArticle created(DateTime? created) => call(created: created);
|
||||
|
||||
@override
|
||||
FeedArticle updated(DateTime? updated) => this(updated: updated);
|
||||
FeedArticle updated(DateTime? updated) => call(updated: updated);
|
||||
|
||||
@override
|
||||
FeedArticle lastRead(DateTime? lastRead) => this(lastRead: lastRead);
|
||||
FeedArticle lastRead(DateTime? lastRead) => call(lastRead: lastRead);
|
||||
|
||||
@override
|
||||
FeedArticle title(String? title) => this(title: title);
|
||||
FeedArticle title(String? title) => call(title: title);
|
||||
|
||||
@override
|
||||
FeedArticle authors(List<FeedAuthor>? authors) => this(authors: authors);
|
||||
FeedArticle authors(List<FeedAuthor>? authors) => call(authors: authors);
|
||||
|
||||
@override
|
||||
FeedArticle tags(List<FeedCategory>? tags) => this(tags: tags);
|
||||
FeedArticle tags(List<FeedCategory>? tags) => call(tags: tags);
|
||||
|
||||
@override
|
||||
FeedArticle links(List<FeedLink>? links) => this(links: links);
|
||||
FeedArticle links(List<FeedLink>? links) => call(links: links);
|
||||
|
||||
@override
|
||||
FeedArticle summaryHtml(String? summaryHtml) =>
|
||||
this(summaryHtml: summaryHtml);
|
||||
call(summaryHtml: summaryHtml);
|
||||
|
||||
@override
|
||||
FeedArticle summaryMarkdown(String? summaryMarkdown) =>
|
||||
this(summaryMarkdown: summaryMarkdown);
|
||||
call(summaryMarkdown: summaryMarkdown);
|
||||
|
||||
@override
|
||||
FeedArticle summaryPlain(String? summaryPlain) =>
|
||||
this(summaryPlain: summaryPlain);
|
||||
call(summaryPlain: summaryPlain);
|
||||
|
||||
@override
|
||||
FeedArticle contentHtml(String? contentHtml) =>
|
||||
this(contentHtml: contentHtml);
|
||||
call(contentHtml: contentHtml);
|
||||
|
||||
@override
|
||||
FeedArticle contentMarkdown(String? contentMarkdown) =>
|
||||
this(contentMarkdown: contentMarkdown);
|
||||
call(contentMarkdown: contentMarkdown);
|
||||
|
||||
@override
|
||||
FeedArticle contentPlain(String? contentPlain) =>
|
||||
this(contentPlain: contentPlain);
|
||||
call(contentPlain: contentPlain);
|
||||
|
||||
@override
|
||||
FeedArticle icon(Uri? icon) => this(icon: icon);
|
||||
FeedArticle icon(Uri? icon) => call(icon: icon);
|
||||
|
||||
@override
|
||||
FeedArticle siteLink(Uri? siteLink) => this(siteLink: siteLink);
|
||||
FeedArticle siteLink(Uri? siteLink) => call(siteLink: siteLink);
|
||||
|
||||
@override
|
||||
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `FeedArticle(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
||||
/// Creates a new instance with the provided field values.
|
||||
/// Passing `null` to a nullable field nullifies it, while `null` for a non-nullable field is ignored. To update a single field use `FeedArticle(...).copyWith.fieldName(value)`.
|
||||
///
|
||||
/// Usage
|
||||
/// Example:
|
||||
/// ```dart
|
||||
/// FeedArticle(...).copyWith(id: 12, name: "My name")
|
||||
/// ````
|
||||
/// ```
|
||||
FeedArticle call({
|
||||
Object? id = const $CopyWithPlaceholder(),
|
||||
Object? feedId = const $CopyWithPlaceholder(),
|
||||
@@ -165,15 +168,15 @@ class _$FeedArticleCWProxyImpl implements _$FeedArticleCWProxy {
|
||||
Object? siteLink = const $CopyWithPlaceholder(),
|
||||
}) {
|
||||
return FeedArticle(
|
||||
id: id == const $CopyWithPlaceholder()
|
||||
id: id == const $CopyWithPlaceholder() || id == null
|
||||
? _value.id
|
||||
// ignore: cast_nullable_to_non_nullable
|
||||
: id as String,
|
||||
feedId: feedId == const $CopyWithPlaceholder()
|
||||
feedId: feedId == const $CopyWithPlaceholder() || feedId == null
|
||||
? _value.feedId
|
||||
// ignore: cast_nullable_to_non_nullable
|
||||
: feedId as Uri,
|
||||
fetched: fetched == const $CopyWithPlaceholder()
|
||||
fetched: fetched == const $CopyWithPlaceholder() || fetched == null
|
||||
? _value.fetched
|
||||
// ignore: cast_nullable_to_non_nullable
|
||||
: fetched as DateTime,
|
||||
@@ -242,7 +245,8 @@ class _$FeedArticleCWProxyImpl implements _$FeedArticleCWProxy {
|
||||
}
|
||||
|
||||
extension $FeedArticleCopyWith on FeedArticle {
|
||||
/// Returns a callable class that can be used as follows: `instanceOfFeedArticle.copyWith(...)` or like so:`instanceOfFeedArticle.copyWith.fieldName(...)`.
|
||||
/// Returns a callable class used to build a new instance with modified fields.
|
||||
/// Example: `instanceOfFeedArticle.copyWith(...)` or `instanceOfFeedArticle.copyWith.fieldName(...)`.
|
||||
// ignore: library_private_types_in_public_api
|
||||
_$FeedArticleCWProxy get copyWith => _$FeedArticleCWProxyImpl(this);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
*/
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/converters/feed_data.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article.dart';
|
||||
|
||||
part 'feed_parse_result.g.dart';
|
||||
|
||||
@@ -6,22 +6,46 @@ part of 'providers.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$feedDatabaseHash() => r'c3b20e867da5af6e92d1e8c1efa96b79988837a1';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// See also [feedDatabase].
|
||||
@ProviderFor(feedDatabase)
|
||||
final feedDatabaseProvider = Provider<FeedDatabase>.internal(
|
||||
feedDatabase,
|
||||
name: r'feedDatabaseProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$feedDatabaseHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
const feedDatabaseProvider = FeedDatabaseProvider._();
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef FeedDatabaseRef = ProviderRef<FeedDatabase>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
final class FeedDatabaseProvider
|
||||
extends $FunctionalProvider<FeedDatabase, FeedDatabase, FeedDatabase>
|
||||
with $Provider<FeedDatabase> {
|
||||
const FeedDatabaseProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'feedDatabaseProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$feedDatabaseHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$ProviderElement<FeedDatabase> $createElement($ProviderPointer pointer) =>
|
||||
$ProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FeedDatabase create(Ref ref) {
|
||||
return feedDatabase(ref);
|
||||
}
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(FeedDatabase value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<FeedDatabase>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$feedDatabaseHash() => r'c3b20e867da5af6e92d1e8c1efa96b79988837a1';
|
||||
|
||||
@@ -20,10 +20,9 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:riverpod/riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_parse_result.dart';
|
||||
import 'package:weblibre/features/web_feed/data/providers.dart';
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,22 +6,59 @@ part of 'add_dialog_blocking.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(AddFeedDialogBlocking)
|
||||
const addFeedDialogBlockingProvider = AddFeedDialogBlockingProvider._();
|
||||
|
||||
final class AddFeedDialogBlockingProvider
|
||||
extends $NotifierProvider<AddFeedDialogBlocking, void> {
|
||||
const AddFeedDialogBlockingProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'addFeedDialogBlockingProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$addFeedDialogBlockingHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AddFeedDialogBlocking create() => AddFeedDialogBlocking();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(void value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<void>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$addFeedDialogBlockingHash() =>
|
||||
r'513071d5e507dd292df6b4a3ee3ef7d2217db5bb';
|
||||
|
||||
/// See also [AddFeedDialogBlocking].
|
||||
@ProviderFor(AddFeedDialogBlocking)
|
||||
final addFeedDialogBlockingProvider =
|
||||
NotifierProvider<AddFeedDialogBlocking, void>.internal(
|
||||
AddFeedDialogBlocking.new,
|
||||
name: r'addFeedDialogBlockingProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$addFeedDialogBlockingHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$AddFeedDialogBlocking = Notifier<void>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
abstract class _$AddFeedDialogBlocking extends $Notifier<void> {
|
||||
void build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
build();
|
||||
final ref = this.ref as $Ref<void, void>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<void, void>,
|
||||
void,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,21 +6,58 @@ part of 'article_filter.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(ArticleFilter)
|
||||
const articleFilterProvider = ArticleFilterProvider._();
|
||||
|
||||
final class ArticleFilterProvider
|
||||
extends $NotifierProvider<ArticleFilter, Set<String>> {
|
||||
const ArticleFilterProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'articleFilterProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$articleFilterHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
ArticleFilter create() => ArticleFilter();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(Set<String> value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<Set<String>>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$articleFilterHash() => r'61e4d5230e214038e753bc173158ed1d4dc57040';
|
||||
|
||||
/// See also [ArticleFilter].
|
||||
@ProviderFor(ArticleFilter)
|
||||
final articleFilterProvider =
|
||||
NotifierProvider<ArticleFilter, Set<String>>.internal(
|
||||
ArticleFilter.new,
|
||||
name: r'articleFilterProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$articleFilterHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$ArticleFilter = Notifier<Set<String>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
abstract class _$ArticleFilter extends $Notifier<Set<String>> {
|
||||
Set<String> build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<Set<String>, Set<String>>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<Set<String>, Set<String>>,
|
||||
Set<String>,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article.dart';
|
||||
import 'package:weblibre/features/web_feed/data/providers.dart';
|
||||
|
||||
|
||||
@@ -6,20 +6,58 @@ part of 'feed_repository.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(FeedRepository)
|
||||
const feedRepositoryProvider = FeedRepositoryProvider._();
|
||||
|
||||
final class FeedRepositoryProvider
|
||||
extends $NotifierProvider<FeedRepository, void> {
|
||||
const FeedRepositoryProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'feedRepositoryProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$feedRepositoryHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
FeedRepository create() => FeedRepository();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(void value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<void>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$feedRepositoryHash() => r'805cc26890b0d43576a1eab0ecb5851b6649d7b7';
|
||||
|
||||
/// See also [FeedRepository].
|
||||
@ProviderFor(FeedRepository)
|
||||
final feedRepositoryProvider = NotifierProvider<FeedRepository, void>.internal(
|
||||
FeedRepository.new,
|
||||
name: r'feedRepositoryProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$feedRepositoryHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$FeedRepository = Notifier<void>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
abstract class _$FeedRepository extends $Notifier<void> {
|
||||
void build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
build();
|
||||
final ref = this.ref as $Ref<void, void>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<void, void>,
|
||||
void,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,22 +6,60 @@ part of 'article_content_processor.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(ArticleContentProcessorService)
|
||||
const articleContentProcessorServiceProvider =
|
||||
ArticleContentProcessorServiceProvider._();
|
||||
|
||||
final class ArticleContentProcessorServiceProvider
|
||||
extends $NotifierProvider<ArticleContentProcessorService, void> {
|
||||
const ArticleContentProcessorServiceProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'articleContentProcessorServiceProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$articleContentProcessorServiceHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
ArticleContentProcessorService create() => ArticleContentProcessorService();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(void value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<void>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$articleContentProcessorServiceHash() =>
|
||||
r'e7cc3da71f6dcf39b0c10df4dcd061f816d5c12e';
|
||||
|
||||
/// See also [ArticleContentProcessorService].
|
||||
@ProviderFor(ArticleContentProcessorService)
|
||||
final articleContentProcessorServiceProvider =
|
||||
NotifierProvider<ArticleContentProcessorService, void>.internal(
|
||||
ArticleContentProcessorService.new,
|
||||
name: r'articleContentProcessorServiceProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$articleContentProcessorServiceHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$ArticleContentProcessorService = Notifier<void>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
abstract class _$ArticleContentProcessorService extends $Notifier<void> {
|
||||
void build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
build();
|
||||
final ref = this.ref as $Ref<void, void>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<void, void>,
|
||||
void,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,20 +6,57 @@ part of 'feed_reader.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(FeedReader)
|
||||
const feedReaderProvider = FeedReaderProvider._();
|
||||
|
||||
final class FeedReaderProvider extends $NotifierProvider<FeedReader, void> {
|
||||
const FeedReaderProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'feedReaderProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$feedReaderHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
FeedReader create() => FeedReader();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(void value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<void>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$feedReaderHash() => r'5d1ca364fe7ad702628a7f2bbd3e706876bc3111';
|
||||
|
||||
/// See also [FeedReader].
|
||||
@ProviderFor(FeedReader)
|
||||
final feedReaderProvider = NotifierProvider<FeedReader, void>.internal(
|
||||
FeedReader.new,
|
||||
name: r'feedReaderProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$feedReaderHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$FeedReader = Notifier<void>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
abstract class _$FeedReader extends $Notifier<void> {
|
||||
void build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
build();
|
||||
final ref = this.ref as $Ref<void, void>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<void, void>,
|
||||
void,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,25 +6,59 @@ part of 'fetch_articles.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(FetchArticlesController)
|
||||
const fetchArticlesControllerProvider = FetchArticlesControllerProvider._();
|
||||
|
||||
final class FetchArticlesControllerProvider
|
||||
extends $NotifierProvider<FetchArticlesController, AsyncValue<void>> {
|
||||
const FetchArticlesControllerProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'fetchArticlesControllerProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$fetchArticlesControllerHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
FetchArticlesController create() => FetchArticlesController();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(AsyncValue<void> value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<AsyncValue<void>>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$fetchArticlesControllerHash() =>
|
||||
r'7604d9352da886624c3cf6862b89c397edda1f28';
|
||||
|
||||
/// See also [FetchArticlesController].
|
||||
@ProviderFor(FetchArticlesController)
|
||||
final fetchArticlesControllerProvider =
|
||||
AutoDisposeNotifierProvider<
|
||||
FetchArticlesController,
|
||||
AsyncValue<void>
|
||||
>.internal(
|
||||
FetchArticlesController.new,
|
||||
name: r'fetchArticlesControllerProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$fetchArticlesControllerHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$FetchArticlesController = AutoDisposeNotifier<AsyncValue<void>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
abstract class _$FetchArticlesController extends $Notifier<AsyncValue<void>> {
|
||||
AsyncValue<void> build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<AsyncValue<void>, AsyncValue<void>>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<AsyncValue<void>, AsyncValue<void>>,
|
||||
AsyncValue<void>,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ class FeedArticleListScreen extends HookConsumerWidget {
|
||||
final feedTitle = ref.watch(
|
||||
feedDataProvider(
|
||||
feedId,
|
||||
).select((value) => value.valueOrNull?.title.whenNotEmpty),
|
||||
).select((value) => value.value?.title.whenNotEmpty),
|
||||
);
|
||||
|
||||
final focusNode = useFocusNode();
|
||||
|
||||
@@ -25,7 +25,7 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:weblibre/extensions/uri.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_category.dart';
|
||||
import 'package:weblibre/features/web_feed/domain/providers.dart';
|
||||
import 'package:weblibre/features/web_feed/domain/repositories/feed_repository.dart';
|
||||
|
||||
@@ -24,7 +24,7 @@ import 'package:nullability/nullability.dart';
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
import 'package:weblibre/core/routing/routes.dart';
|
||||
import 'package:weblibre/extensions/uri.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/domain/providers.dart';
|
||||
import 'package:weblibre/features/web_feed/presentation/widgets/authors_horizontal_list.dart';
|
||||
import 'package:weblibre/features/web_feed/presentation/widgets/tags_horizontal_list.dart';
|
||||
|
||||
@@ -21,7 +21,7 @@ import 'package:collection/collection.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
import 'package:rss_dart/dart_rss.dart';
|
||||
import 'package:rss_dart/domain/rss1_feed.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/database.dart';
|
||||
import 'package:weblibre/features/web_feed/data/database/definitions.drift.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_article.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_author.dart';
|
||||
import 'package:weblibre/features/web_feed/data/models/feed_link.dart';
|
||||
|
||||
Reference in New Issue
Block a user