Merge Provider => Remove Code Duplication

Merge `fetchMangaSourcesListProvider`, `fetchAnimeSourcesListProvider` and `fetchNovelSourcesListProvider` into a single Provider, `FetchItemSourcesListProvider`, reducing code duplication.
This commit is contained in:
NBA2K1 2025-06-07 03:24:39 +02:00
parent 138e2887e0
commit fecda49373
10 changed files with 107 additions and 519 deletions

View file

@ -4,11 +4,9 @@ import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart';
import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/source.dart'; import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/modules/browse/extension/providers/extensions_provider.dart'; import 'package:mangayomi/modules/browse/extension/providers/extensions_provider.dart';
import 'package:mangayomi/services/fetch_anime_sources.dart'; import 'package:mangayomi/services/fetch_item_sources.dart';
import 'package:mangayomi/services/fetch_manga_sources.dart';
import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart';
import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/services/fetch_novel_sources.dart';
import 'package:mangayomi/services/fetch_sources_list.dart'; import 'package:mangayomi/services/fetch_sources_list.dart';
import 'package:mangayomi/utils/language.dart'; import 'package:mangayomi/utils/language.dart';
import 'package:mangayomi/modules/browse/extension/widgets/extension_list_tile_widget.dart'; import 'package:mangayomi/modules/browse/extension/widgets/extension_list_tile_widget.dart';
@ -30,48 +28,34 @@ class _ExtensionScreenState extends ConsumerState<ExtensionScreen> {
final ScrollController controller = ScrollController(); final ScrollController controller = ScrollController();
bool isUpdating = false; bool isUpdating = false;
Future<void> _refreshSources() { Future<void> _refreshSources() {
return switch (widget.itemType) { return ref.refresh(
ItemType.manga => ref.refresh( fetchItemSourcesListProvider(
fetchMangaSourcesListProvider(id: null, reFresh: true).future, id: null,
), reFresh: true,
ItemType.anime => ref.refresh( itemType: widget.itemType,
fetchAnimeSourcesListProvider(id: null, reFresh: true).future, ).future,
), );
_ => ref.refresh(
fetchNovelSourcesListProvider(id: null, reFresh: true).future,
),
};
} }
Future<void> _updateSource(Source source) { Future<void> _updateSource(Source source) {
switch (source.itemType) { return ref.read(
case ItemType.manga: fetchItemSourcesListProvider(
return ref.read( id: source.id,
fetchMangaSourcesListProvider(id: source.id, reFresh: true).future, reFresh: true,
); itemType: source.itemType,
case ItemType.anime: ).future,
return ref.read( );
fetchAnimeSourcesListProvider(id: source.id, reFresh: true).future,
);
default:
return ref.read(
fetchNovelSourcesListProvider(id: source.id, reFresh: true).future,
);
}
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
switch (widget.itemType) { ref.read(
case ItemType.manga: fetchItemSourcesListProvider(
ref.read(fetchMangaSourcesListProvider(id: null, reFresh: false)); id: null,
break; reFresh: false,
case ItemType.anime: itemType: widget.itemType,
ref.read(fetchAnimeSourcesListProvider(id: null, reFresh: false)); ),
break; );
default:
ref.read(fetchNovelSourcesListProvider(id: null, reFresh: false));
}
final streamExtensions = ref.watch( final streamExtensions = ref.watch(
getExtensionsStreamProvider(widget.itemType), getExtensionsStreamProvider(widget.itemType),

View file

@ -1,12 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/source.dart'; import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/services/fetch_anime_sources.dart'; import 'package:mangayomi/services/fetch_item_sources.dart';
import 'package:mangayomi/services/fetch_manga_sources.dart';
import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/services/fetch_novel_sources.dart';
import 'package:mangayomi/services/fetch_sources_list.dart'; import 'package:mangayomi/services/fetch_sources_list.dart';
import 'package:mangayomi/utils/cached_network.dart'; import 'package:mangayomi/utils/cached_network.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
@ -45,17 +42,11 @@ class _ExtensionListTileWidgetState
setState(() => _isLoading = true); setState(() => _isLoading = true);
try { try {
final provider = switch (widget.source.itemType) { final provider = fetchItemSourcesListProvider(
ItemType.manga => fetchMangaSourcesListProvider( id: widget.source.id,
id: widget.source.id, reFresh: true,
reFresh: true, itemType: widget.source.itemType,
), );
ItemType.anime => fetchAnimeSourcesListProvider(
id: widget.source.id,
reFresh: true,
),
_ => fetchNovelSourcesListProvider(id: widget.source.id, reFresh: true),
};
if (!widget.source.isAdded!) ref.invalidate(provider); if (!widget.source.isAdded!) ref.invalidate(provider);
await ref.watch(provider.future); await ref.watch(provider.future);

View file

@ -14,14 +14,12 @@ import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart'; import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart';
import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart'; import 'package:mangayomi/modules/more/settings/sync/providers/sync_providers.dart';
import 'package:mangayomi/modules/widgets/loading_icon.dart'; import 'package:mangayomi/modules/widgets/loading_icon.dart';
import 'package:mangayomi/services/fetch_anime_sources.dart'; import 'package:mangayomi/services/fetch_item_sources.dart';
import 'package:mangayomi/services/fetch_manga_sources.dart';
import 'package:mangayomi/modules/main_view/providers/migration.dart'; import 'package:mangayomi/modules/main_view/providers/migration.dart';
import 'package:mangayomi/modules/more/about/providers/check_for_update.dart'; import 'package:mangayomi/modules/more/about/providers/check_for_update.dart';
import 'package:mangayomi/modules/more/data_and_storage/providers/auto_backup.dart'; import 'package:mangayomi/modules/more/data_and_storage/providers/auto_backup.dart';
import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/router/router.dart'; import 'package:mangayomi/router/router.dart';
import 'package:mangayomi/services/fetch_novel_sources.dart';
import 'package:mangayomi/services/fetch_sources_list.dart'; import 'package:mangayomi/services/fetch_sources_list.dart';
import 'package:mangayomi/services/sync_server.dart'; import 'package:mangayomi/services/sync_server.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
@ -107,9 +105,15 @@ class _MainScreenState extends ConsumerState<MainScreen> {
Future.microtask(() { Future.microtask(() {
if (mounted) { if (mounted) {
ref.read(checkForUpdateProvider(context: context)); ref.read(checkForUpdateProvider(context: context));
ref.read(fetchMangaSourcesListProvider(id: null, reFresh: false)); for (var type in ItemType.values) {
ref.read(fetchAnimeSourcesListProvider(id: null, reFresh: false)); ref.read(
ref.read(fetchNovelSourcesListProvider(id: null, reFresh: false)); FetchItemSourcesListProvider(
id: null,
reFresh: false,
itemType: type,
),
);
}
} }
}); });
} }

View file

@ -5,9 +5,7 @@ import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/models/source.dart'; import 'package:mangayomi/models/source.dart';
import 'package:mangayomi/services/fetch_anime_sources.dart'; import 'package:mangayomi/services/fetch_item_sources.dart';
import 'package:mangayomi/services/fetch_manga_sources.dart';
import 'package:mangayomi/services/fetch_novel_sources.dart';
import 'package:mangayomi/services/http/m_client.dart'; import 'package:mangayomi/services/http/m_client.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'browse_state_provider.g.dart'; part 'browse_state_provider.g.dart';
@ -57,17 +55,13 @@ class ExtensionsRepoState extends _$ExtensionsRepoState {
a; a;
}); });
try { try {
final a = switch (itemType) { final a = ref.refresh(
ItemType.manga => ref.refresh( fetchItemSourcesListProvider(
fetchMangaSourcesListProvider(id: null, reFresh: false).future, id: null,
), reFresh: false,
ItemType.anime => ref.refresh( itemType: itemType,
fetchAnimeSourcesListProvider(id: null, reFresh: false).future, ).future,
), );
_ => ref.refresh(
fetchNovelSourcesListProvider(id: null, reFresh: false).future,
),
};
Future.wait([a]); Future.wait([a]);
} catch (_) {} } catch (_) {}
} }

View file

@ -4,23 +4,24 @@ import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_pr
import 'package:mangayomi/services/fetch_sources_list.dart'; import 'package:mangayomi/services/fetch_sources_list.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
part 'fetch_anime_sources.g.dart'; part 'fetch_item_sources.g.dart';
@Riverpod(keepAlive: true) @Riverpod(keepAlive: true)
Future<void> fetchAnimeSourcesList( Future<void> fetchItemSourcesList(
Ref ref, { Ref ref, {
int? id, int? id,
required bool reFresh, required bool reFresh,
required ItemType itemType,
}) async { }) async {
if (ref.watch(checkForExtensionsUpdateStateProvider) || reFresh) { if (ref.watch(checkForExtensionsUpdateStateProvider) || reFresh) {
final repos = ref.watch(extensionsRepoStateProvider(ItemType.anime)); final repos = ref.watch(extensionsRepoStateProvider(itemType));
for (Repo repo in repos) { for (Repo repo in repos) {
await fetchSourcesList( await fetchSourcesList(
repo: repo, repo: repo,
refresh: reFresh, refresh: reFresh,
id: id, id: id,
ref: ref, ref: ref,
itemType: ItemType.anime, itemType: itemType,
); );
} }
} }

View file

@ -1,13 +1,13 @@
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
part of 'fetch_anime_sources.dart'; part of 'fetch_item_sources.dart';
// ************************************************************************** // **************************************************************************
// RiverpodGenerator // RiverpodGenerator
// ************************************************************************** // **************************************************************************
String _$fetchAnimeSourcesListHash() => String _$fetchItemSourcesListHash() =>
r'e7f673d37239c74f3403de3a234bbc1d6e171332'; r'16238be20517fddacf52a2694fbd50cafbfa7496';
/// Copied from Dart SDK /// Copied from Dart SDK
class _SystemHash { class _SystemHash {
@ -30,33 +30,36 @@ class _SystemHash {
} }
} }
/// See also [fetchAnimeSourcesList]. /// See also [fetchItemSourcesList].
@ProviderFor(fetchAnimeSourcesList) @ProviderFor(fetchItemSourcesList)
const fetchAnimeSourcesListProvider = FetchAnimeSourcesListFamily(); const fetchItemSourcesListProvider = FetchItemSourcesListFamily();
/// See also [fetchAnimeSourcesList]. /// See also [fetchItemSourcesList].
class FetchAnimeSourcesListFamily extends Family<AsyncValue<void>> { class FetchItemSourcesListFamily extends Family<AsyncValue<void>> {
/// See also [fetchAnimeSourcesList]. /// See also [fetchItemSourcesList].
const FetchAnimeSourcesListFamily(); const FetchItemSourcesListFamily();
/// See also [fetchAnimeSourcesList]. /// See also [fetchItemSourcesList].
FetchAnimeSourcesListProvider call({ FetchItemSourcesListProvider call({
int? id, int? id,
required bool reFresh, required bool reFresh,
required ItemType itemType,
}) { }) {
return FetchAnimeSourcesListProvider( return FetchItemSourcesListProvider(
id: id, id: id,
reFresh: reFresh, reFresh: reFresh,
itemType: itemType,
); );
} }
@override @override
FetchAnimeSourcesListProvider getProviderOverride( FetchItemSourcesListProvider getProviderOverride(
covariant FetchAnimeSourcesListProvider provider, covariant FetchItemSourcesListProvider provider,
) { ) {
return call( return call(
id: provider.id, id: provider.id,
reFresh: provider.reFresh, reFresh: provider.reFresh,
itemType: provider.itemType,
); );
} }
@ -72,35 +75,38 @@ class FetchAnimeSourcesListFamily extends Family<AsyncValue<void>> {
_allTransitiveDependencies; _allTransitiveDependencies;
@override @override
String? get name => r'fetchAnimeSourcesListProvider'; String? get name => r'fetchItemSourcesListProvider';
} }
/// See also [fetchAnimeSourcesList]. /// See also [fetchItemSourcesList].
class FetchAnimeSourcesListProvider extends FutureProvider<void> { class FetchItemSourcesListProvider extends FutureProvider<void> {
/// See also [fetchAnimeSourcesList]. /// See also [fetchItemSourcesList].
FetchAnimeSourcesListProvider({ FetchItemSourcesListProvider({
int? id, int? id,
required bool reFresh, required bool reFresh,
required ItemType itemType,
}) : this._internal( }) : this._internal(
(ref) => fetchAnimeSourcesList( (ref) => fetchItemSourcesList(
ref as FetchAnimeSourcesListRef, ref as FetchItemSourcesListRef,
id: id, id: id,
reFresh: reFresh, reFresh: reFresh,
itemType: itemType,
), ),
from: fetchAnimeSourcesListProvider, from: fetchItemSourcesListProvider,
name: r'fetchAnimeSourcesListProvider', name: r'fetchItemSourcesListProvider',
debugGetCreateSourceHash: debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product') const bool.fromEnvironment('dart.vm.product')
? null ? null
: _$fetchAnimeSourcesListHash, : _$fetchItemSourcesListHash,
dependencies: FetchAnimeSourcesListFamily._dependencies, dependencies: FetchItemSourcesListFamily._dependencies,
allTransitiveDependencies: allTransitiveDependencies:
FetchAnimeSourcesListFamily._allTransitiveDependencies, FetchItemSourcesListFamily._allTransitiveDependencies,
id: id, id: id,
reFresh: reFresh, reFresh: reFresh,
itemType: itemType,
); );
FetchAnimeSourcesListProvider._internal( FetchItemSourcesListProvider._internal(
super._createNotifier, { super._createNotifier, {
required super.name, required super.name,
required super.dependencies, required super.dependencies,
@ -109,19 +115,21 @@ class FetchAnimeSourcesListProvider extends FutureProvider<void> {
required super.from, required super.from,
required this.id, required this.id,
required this.reFresh, required this.reFresh,
required this.itemType,
}) : super.internal(); }) : super.internal();
final int? id; final int? id;
final bool reFresh; final bool reFresh;
final ItemType itemType;
@override @override
Override overrideWith( Override overrideWith(
FutureOr<void> Function(FetchAnimeSourcesListRef provider) create, FutureOr<void> Function(FetchItemSourcesListRef provider) create,
) { ) {
return ProviderOverride( return ProviderOverride(
origin: this, origin: this,
override: FetchAnimeSourcesListProvider._internal( override: FetchItemSourcesListProvider._internal(
(ref) => create(ref as FetchAnimeSourcesListRef), (ref) => create(ref as FetchItemSourcesListRef),
from: from, from: from,
name: null, name: null,
dependencies: null, dependencies: null,
@ -129,20 +137,22 @@ class FetchAnimeSourcesListProvider extends FutureProvider<void> {
debugGetCreateSourceHash: null, debugGetCreateSourceHash: null,
id: id, id: id,
reFresh: reFresh, reFresh: reFresh,
itemType: itemType,
), ),
); );
} }
@override @override
FutureProviderElement<void> createElement() { FutureProviderElement<void> createElement() {
return _FetchAnimeSourcesListProviderElement(this); return _FetchItemSourcesListProviderElement(this);
} }
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
return other is FetchAnimeSourcesListProvider && return other is FetchItemSourcesListProvider &&
other.id == id && other.id == id &&
other.reFresh == reFresh; other.reFresh == reFresh &&
other.itemType == itemType;
} }
@override @override
@ -150,6 +160,7 @@ class FetchAnimeSourcesListProvider extends FutureProvider<void> {
var hash = _SystemHash.combine(0, runtimeType.hashCode); var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, id.hashCode); hash = _SystemHash.combine(hash, id.hashCode);
hash = _SystemHash.combine(hash, reFresh.hashCode); hash = _SystemHash.combine(hash, reFresh.hashCode);
hash = _SystemHash.combine(hash, itemType.hashCode);
return _SystemHash.finish(hash); return _SystemHash.finish(hash);
} }
@ -157,22 +168,27 @@ class FetchAnimeSourcesListProvider extends FutureProvider<void> {
@Deprecated('Will be removed in 3.0. Use Ref instead') @Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element // ignore: unused_element
mixin FetchAnimeSourcesListRef on FutureProviderRef<void> { mixin FetchItemSourcesListRef on FutureProviderRef<void> {
/// The parameter `id` of this provider. /// The parameter `id` of this provider.
int? get id; int? get id;
/// The parameter `reFresh` of this provider. /// The parameter `reFresh` of this provider.
bool get reFresh; bool get reFresh;
/// The parameter `itemType` of this provider.
ItemType get itemType;
} }
class _FetchAnimeSourcesListProviderElement extends FutureProviderElement<void> class _FetchItemSourcesListProviderElement extends FutureProviderElement<void>
with FetchAnimeSourcesListRef { with FetchItemSourcesListRef {
_FetchAnimeSourcesListProviderElement(super.provider); _FetchItemSourcesListProviderElement(super.provider);
@override @override
int? get id => (origin as FetchAnimeSourcesListProvider).id; int? get id => (origin as FetchItemSourcesListProvider).id;
@override @override
bool get reFresh => (origin as FetchAnimeSourcesListProvider).reFresh; bool get reFresh => (origin as FetchItemSourcesListProvider).reFresh;
@override
ItemType get itemType => (origin as FetchItemSourcesListProvider).itemType;
} }
// ignore_for_file: type=lint // 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 // 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

View file

@ -1,23 +0,0 @@
import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart';
import 'package:mangayomi/services/fetch_sources_list.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
part 'fetch_manga_sources.g.dart';
@Riverpod(keepAlive: true)
Future<void> fetchMangaSourcesList(Ref ref, {int? id, required reFresh}) async {
if (ref.watch(checkForExtensionsUpdateStateProvider) || reFresh) {
final repos = ref.watch(extensionsRepoStateProvider(ItemType.manga));
for (Repo repo in repos) {
await fetchSourcesList(
repo: repo,
refresh: reFresh,
id: id,
ref: ref,
itemType: ItemType.manga,
);
}
}
}

View file

@ -1,178 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'fetch_manga_sources.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$fetchMangaSourcesListHash() =>
r'176206caf5c51a94b100866d5cdb612d2a5c2fb7';
/// Copied from Dart SDK
class _SystemHash {
_SystemHash._();
static int combine(int hash, int value) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + value);
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
return hash ^ (hash >> 6);
}
static int finish(int hash) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
// ignore: parameter_assignments
hash = hash ^ (hash >> 11);
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
}
}
/// See also [fetchMangaSourcesList].
@ProviderFor(fetchMangaSourcesList)
const fetchMangaSourcesListProvider = FetchMangaSourcesListFamily();
/// See also [fetchMangaSourcesList].
class FetchMangaSourcesListFamily extends Family<AsyncValue<void>> {
/// See also [fetchMangaSourcesList].
const FetchMangaSourcesListFamily();
/// See also [fetchMangaSourcesList].
FetchMangaSourcesListProvider call({
int? id,
required dynamic reFresh,
}) {
return FetchMangaSourcesListProvider(
id: id,
reFresh: reFresh,
);
}
@override
FetchMangaSourcesListProvider getProviderOverride(
covariant FetchMangaSourcesListProvider provider,
) {
return call(
id: provider.id,
reFresh: provider.reFresh,
);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'fetchMangaSourcesListProvider';
}
/// See also [fetchMangaSourcesList].
class FetchMangaSourcesListProvider extends FutureProvider<void> {
/// See also [fetchMangaSourcesList].
FetchMangaSourcesListProvider({
int? id,
required dynamic reFresh,
}) : this._internal(
(ref) => fetchMangaSourcesList(
ref as FetchMangaSourcesListRef,
id: id,
reFresh: reFresh,
),
from: fetchMangaSourcesListProvider,
name: r'fetchMangaSourcesListProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$fetchMangaSourcesListHash,
dependencies: FetchMangaSourcesListFamily._dependencies,
allTransitiveDependencies:
FetchMangaSourcesListFamily._allTransitiveDependencies,
id: id,
reFresh: reFresh,
);
FetchMangaSourcesListProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.id,
required this.reFresh,
}) : super.internal();
final int? id;
final dynamic reFresh;
@override
Override overrideWith(
FutureOr<void> Function(FetchMangaSourcesListRef provider) create,
) {
return ProviderOverride(
origin: this,
override: FetchMangaSourcesListProvider._internal(
(ref) => create(ref as FetchMangaSourcesListRef),
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
id: id,
reFresh: reFresh,
),
);
}
@override
FutureProviderElement<void> createElement() {
return _FetchMangaSourcesListProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is FetchMangaSourcesListProvider &&
other.id == id &&
other.reFresh == reFresh;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, id.hashCode);
hash = _SystemHash.combine(hash, reFresh.hashCode);
return _SystemHash.finish(hash);
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin FetchMangaSourcesListRef on FutureProviderRef<void> {
/// The parameter `id` of this provider.
int? get id;
/// The parameter `reFresh` of this provider.
dynamic get reFresh;
}
class _FetchMangaSourcesListProviderElement extends FutureProviderElement<void>
with FetchMangaSourcesListRef {
_FetchMangaSourcesListProviderElement(super.provider);
@override
int? get id => (origin as FetchMangaSourcesListProvider).id;
@override
dynamic get reFresh => (origin as FetchMangaSourcesListProvider).reFresh;
}
// 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

View file

@ -1,23 +0,0 @@
import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart';
import 'package:mangayomi/services/fetch_sources_list.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
part 'fetch_novel_sources.g.dart';
@Riverpod(keepAlive: true)
Future<void> fetchNovelSourcesList(Ref ref, {int? id, required reFresh}) async {
if (ref.watch(checkForExtensionsUpdateStateProvider) || reFresh) {
final repos = ref.watch(extensionsRepoStateProvider(ItemType.novel));
for (Repo repo in repos) {
await fetchSourcesList(
repo: repo,
refresh: reFresh,
id: id,
ref: ref,
itemType: ItemType.novel,
);
}
}
}

View file

@ -1,178 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'fetch_novel_sources.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$fetchNovelSourcesListHash() =>
r'882ee56332290a6fe71d38a8378de847e4386e3a';
/// Copied from Dart SDK
class _SystemHash {
_SystemHash._();
static int combine(int hash, int value) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + value);
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
return hash ^ (hash >> 6);
}
static int finish(int hash) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
// ignore: parameter_assignments
hash = hash ^ (hash >> 11);
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
}
}
/// See also [fetchNovelSourcesList].
@ProviderFor(fetchNovelSourcesList)
const fetchNovelSourcesListProvider = FetchNovelSourcesListFamily();
/// See also [fetchNovelSourcesList].
class FetchNovelSourcesListFamily extends Family<AsyncValue<void>> {
/// See also [fetchNovelSourcesList].
const FetchNovelSourcesListFamily();
/// See also [fetchNovelSourcesList].
FetchNovelSourcesListProvider call({
int? id,
required dynamic reFresh,
}) {
return FetchNovelSourcesListProvider(
id: id,
reFresh: reFresh,
);
}
@override
FetchNovelSourcesListProvider getProviderOverride(
covariant FetchNovelSourcesListProvider provider,
) {
return call(
id: provider.id,
reFresh: provider.reFresh,
);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'fetchNovelSourcesListProvider';
}
/// See also [fetchNovelSourcesList].
class FetchNovelSourcesListProvider extends FutureProvider<void> {
/// See also [fetchNovelSourcesList].
FetchNovelSourcesListProvider({
int? id,
required dynamic reFresh,
}) : this._internal(
(ref) => fetchNovelSourcesList(
ref as FetchNovelSourcesListRef,
id: id,
reFresh: reFresh,
),
from: fetchNovelSourcesListProvider,
name: r'fetchNovelSourcesListProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$fetchNovelSourcesListHash,
dependencies: FetchNovelSourcesListFamily._dependencies,
allTransitiveDependencies:
FetchNovelSourcesListFamily._allTransitiveDependencies,
id: id,
reFresh: reFresh,
);
FetchNovelSourcesListProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.id,
required this.reFresh,
}) : super.internal();
final int? id;
final dynamic reFresh;
@override
Override overrideWith(
FutureOr<void> Function(FetchNovelSourcesListRef provider) create,
) {
return ProviderOverride(
origin: this,
override: FetchNovelSourcesListProvider._internal(
(ref) => create(ref as FetchNovelSourcesListRef),
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
id: id,
reFresh: reFresh,
),
);
}
@override
FutureProviderElement<void> createElement() {
return _FetchNovelSourcesListProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is FetchNovelSourcesListProvider &&
other.id == id &&
other.reFresh == reFresh;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, id.hashCode);
hash = _SystemHash.combine(hash, reFresh.hashCode);
return _SystemHash.finish(hash);
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin FetchNovelSourcesListRef on FutureProviderRef<void> {
/// The parameter `id` of this provider.
int? get id;
/// The parameter `reFresh` of this provider.
dynamic get reFresh;
}
class _FetchNovelSourcesListProviderElement extends FutureProviderElement<void>
with FetchNovelSourcesListRef {
_FetchNovelSourcesListProviderElement(super.provider);
@override
int? get id => (origin as FetchNovelSourcesListProvider).id;
@override
dynamic get reFresh => (origin as FetchNovelSourcesListProvider).reFresh;
}
// 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