mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-01-11 22:40:36 +00:00
Refactor and update dependencies for Isar and Riverpod
This commit is contained in:
parent
55ac972989
commit
430e81e021
311 changed files with 11986 additions and 19418 deletions
|
|
@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ pluginManagement {
|
|||
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
id "com.android.application" version "8.9.1" apply false
|
||||
id "org.jetbrains.kotlin.android" version "2.1.0" apply false
|
||||
id "com.android.application" version "8.12.1" apply false
|
||||
id "org.jetbrains.kotlin.android" version "2.2.0" apply false
|
||||
}
|
||||
|
||||
include ":app"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'dart:math';
|
||||
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
part 'source_preference.g.dart';
|
||||
|
||||
@collection
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ const SourcePreferenceSchema = CollectionSchema(
|
|||
getId: _sourcePreferenceGetId,
|
||||
getLinks: _sourcePreferenceGetLinks,
|
||||
attach: _sourcePreferenceAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _sourcePreferenceEstimateSize(
|
||||
|
|
@ -993,7 +993,7 @@ const SourcePreferenceStringValueSchema = CollectionSchema(
|
|||
getId: _sourcePreferenceStringValueGetId,
|
||||
getLinks: _sourcePreferenceStringValueGetLinks,
|
||||
attach: _sourcePreferenceStringValueAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _sourcePreferenceStringValueEstimateSize(
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:hive_flutter/adapters.dart';
|
||||
import 'package:intl/date_symbol_data_local.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/models/custom_button.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
|
|
@ -356,7 +356,13 @@ class _MyAppState extends ConsumerState<MyApp> {
|
|||
status: track.TrackStatus.completed,
|
||||
);
|
||||
ref
|
||||
.read(trackStateProvider(track: temp, itemType: null).notifier)
|
||||
.read(
|
||||
trackStateProvider(
|
||||
track: temp,
|
||||
itemType: null,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.checkRefresh();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
part 'category.g.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ const CategorySchema = CollectionSchema(
|
|||
getId: _categoryGetId,
|
||||
getLinks: _categoryGetLinks,
|
||||
attach: _categoryAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _categoryEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
part 'changed.g.dart';
|
||||
|
||||
@collection
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ const ChangedPartSchema = CollectionSchema(
|
|||
getId: _changedPartGetId,
|
||||
getLinks: _changedPartGetLinks,
|
||||
attach: _changedPartAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _changedPartEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
part 'chapter.g.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ const ChapterSchema = CollectionSchema(
|
|||
getId: _chapterGetId,
|
||||
getLinks: _chapterGetLinks,
|
||||
attach: _chapterAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _chapterEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
part 'custom_button.g.dart';
|
||||
|
||||
@collection
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ const CustomButtonSchema = CollectionSchema(
|
|||
getId: _customButtonGetId,
|
||||
getLinks: _customButtonGetLinks,
|
||||
attach: _customButtonAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _customButtonEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
|
||||
part 'download.g.dart';
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ const DownloadSchema = CollectionSchema(
|
|||
getId: _downloadGetId,
|
||||
getLinks: _downloadGetLinks,
|
||||
attach: _downloadAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _downloadEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
part 'history.g.dart';
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ const HistorySchema = CollectionSchema(
|
|||
getId: _historyGetId,
|
||||
getLinks: _historyGetLinks,
|
||||
attach: _historyAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _historyEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
part 'manga.g.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ const MangaSchema = CollectionSchema(
|
|||
getId: _mangaGetId,
|
||||
getLinks: _mangaGetLinks,
|
||||
attach: _mangaAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _mangaEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/utils/constant.dart';
|
||||
part 'settings.g.dart';
|
||||
|
|
@ -281,7 +281,7 @@ class Settings {
|
|||
late AudioChannel audioChannels;
|
||||
|
||||
int? volumeBoostCap;
|
||||
|
||||
|
||||
bool? downloadedOnlyMode;
|
||||
|
||||
late AlgorithmWeights? algorithmWeights;
|
||||
|
|
|
|||
|
|
@ -777,7 +777,7 @@ const SettingsSchema = CollectionSchema(
|
|||
getId: _settingsGetId,
|
||||
getLinks: _settingsGetLinks,
|
||||
attach: _settingsAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _settingsEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/filter.dart';
|
||||
import 'package:mangayomi/eval/model/m_source.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
|
|
@ -216,9 +216,4 @@ class Source {
|
|||
}
|
||||
}
|
||||
|
||||
enum SourceCodeLanguage {
|
||||
dart,
|
||||
javascript,
|
||||
mihon,
|
||||
lnreader
|
||||
}
|
||||
enum SourceCodeLanguage { dart, javascript, mihon, lnreader }
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ const SourceSchema = CollectionSchema(
|
|||
getId: _sourceGetId,
|
||||
getLinks: _sourceGetLinks,
|
||||
attach: _sourceAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _sourceEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
part 'sync_preference.g.dart';
|
||||
|
||||
@collection
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ const SyncPreferenceSchema = CollectionSchema(
|
|||
getId: _syncPreferenceGetId,
|
||||
getLinks: _syncPreferenceGetLinks,
|
||||
attach: _syncPreferenceAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _syncPreferenceEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
part 'track.g.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ const TrackSchema = CollectionSchema(
|
|||
getId: _trackGetId,
|
||||
getLinks: _trackGetLinks,
|
||||
attach: _trackAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _trackEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
part 'track_preference.g.dart';
|
||||
|
||||
@collection
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ const TrackPreferenceSchema = CollectionSchema(
|
|||
getId: _trackPreferenceGetId,
|
||||
getLinks: _trackPreferenceGetLinks,
|
||||
attach: _trackPreferenceAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _trackPreferenceEstimateSize(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
part 'update.g.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ const UpdateSchema = CollectionSchema(
|
|||
getId: _updateGetId,
|
||||
getLinks: _updateGetLinks,
|
||||
attach: _updateAttach,
|
||||
version: '3.1.0+1',
|
||||
version: '3.3.0-dev.3',
|
||||
);
|
||||
|
||||
int _updateEstimateSize(
|
||||
|
|
|
|||
|
|
@ -986,6 +986,7 @@ mp.register_script_message('call_button_${button.id}_long', button${button.id}lo
|
|||
_currentPosition.dispose();
|
||||
_subDelayController.dispose();
|
||||
_subSpeedController.dispose();
|
||||
_streamController.keepAliveLink?.close();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:flutter_riverpod/misc.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/history.dart';
|
||||
|
|
@ -10,16 +10,23 @@ import 'package:mangayomi/modules/manga/reader/providers/reader_controller_provi
|
|||
import 'package:mangayomi/modules/more/settings/player/providers/player_state_provider.dart';
|
||||
import 'package:mangayomi/services/aniskip.dart';
|
||||
import 'package:mangayomi/utils/chapter_recognition.dart';
|
||||
import 'package:mangayomi/utils/riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'anime_player_controller_provider.g.dart';
|
||||
|
||||
final fullscreenProvider = StateProvider<bool>((ref) => false);
|
||||
final fullscreenProvider = StateProvider<bool>(() => false);
|
||||
|
||||
@riverpod
|
||||
class AnimeStreamController extends _$AnimeStreamController {
|
||||
@override
|
||||
void build({required Chapter episode}) {}
|
||||
KeepAliveLink build({required Chapter episode}) {
|
||||
_keepAliveLink = ref.keepAlive();
|
||||
return _keepAliveLink!;
|
||||
}
|
||||
|
||||
KeepAliveLink? _keepAliveLink;
|
||||
|
||||
KeepAliveLink? get keepAliveLink => _keepAliveLink;
|
||||
Manga getAnime() {
|
||||
return episode.manga.value!;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,159 +6,104 @@ part of 'anime_player_controller_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$animeStreamControllerHash() =>
|
||||
r'46cc71afefa3b3c060f7a28c61dc13e1d0b94999';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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));
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _$AnimeStreamController
|
||||
extends BuildlessAutoDisposeNotifier<void> {
|
||||
late final Chapter episode;
|
||||
|
||||
void build({required Chapter episode});
|
||||
}
|
||||
|
||||
/// See also [AnimeStreamController].
|
||||
@ProviderFor(AnimeStreamController)
|
||||
const animeStreamControllerProvider = AnimeStreamControllerFamily();
|
||||
const animeStreamControllerProvider = AnimeStreamControllerFamily._();
|
||||
|
||||
/// See also [AnimeStreamController].
|
||||
class AnimeStreamControllerFamily extends Family<void> {
|
||||
/// See also [AnimeStreamController].
|
||||
const AnimeStreamControllerFamily();
|
||||
final class AnimeStreamControllerProvider
|
||||
extends $NotifierProvider<AnimeStreamController, KeepAliveLink> {
|
||||
const AnimeStreamControllerProvider._({
|
||||
required AnimeStreamControllerFamily super.from,
|
||||
required Chapter super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'animeStreamControllerProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [AnimeStreamController].
|
||||
AnimeStreamControllerProvider call({required Chapter episode}) {
|
||||
return AnimeStreamControllerProvider(episode: episode);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$animeStreamControllerHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'animeStreamControllerProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AnimeStreamControllerProvider getProviderOverride(
|
||||
covariant AnimeStreamControllerProvider provider,
|
||||
) {
|
||||
return call(episode: provider.episode);
|
||||
}
|
||||
AnimeStreamController create() => AnimeStreamController();
|
||||
|
||||
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'animeStreamControllerProvider';
|
||||
}
|
||||
|
||||
/// See also [AnimeStreamController].
|
||||
class AnimeStreamControllerProvider
|
||||
extends AutoDisposeNotifierProviderImpl<AnimeStreamController, void> {
|
||||
/// See also [AnimeStreamController].
|
||||
AnimeStreamControllerProvider({required Chapter episode})
|
||||
: this._internal(
|
||||
() => AnimeStreamController()..episode = episode,
|
||||
from: animeStreamControllerProvider,
|
||||
name: r'animeStreamControllerProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$animeStreamControllerHash,
|
||||
dependencies: AnimeStreamControllerFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
AnimeStreamControllerFamily._allTransitiveDependencies,
|
||||
episode: episode,
|
||||
);
|
||||
|
||||
AnimeStreamControllerProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.episode,
|
||||
}) : super.internal();
|
||||
|
||||
final Chapter episode;
|
||||
|
||||
@override
|
||||
void runNotifierBuild(covariant AnimeStreamController notifier) {
|
||||
return notifier.build(episode: episode);
|
||||
}
|
||||
|
||||
@override
|
||||
Override overrideWith(AnimeStreamController Function() create) {
|
||||
return ProviderOverride(
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(KeepAliveLink value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
override: AnimeStreamControllerProvider._internal(
|
||||
() => create()..episode = episode,
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
episode: episode,
|
||||
),
|
||||
providerOverride: $SyncValueProvider<KeepAliveLink>(value),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeNotifierProviderElement<AnimeStreamController, void>
|
||||
createElement() {
|
||||
return _AnimeStreamControllerProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is AnimeStreamControllerProvider && other.episode == episode;
|
||||
return other is AnimeStreamControllerProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, episode.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin AnimeStreamControllerRef on AutoDisposeNotifierProviderRef<void> {
|
||||
/// The parameter `episode` of this provider.
|
||||
Chapter get episode;
|
||||
}
|
||||
String _$animeStreamControllerHash() =>
|
||||
r'486889b2b9f71759e4d9ff147b039436572cc01e';
|
||||
|
||||
class _AnimeStreamControllerProviderElement
|
||||
extends AutoDisposeNotifierProviderElement<AnimeStreamController, void>
|
||||
with AnimeStreamControllerRef {
|
||||
_AnimeStreamControllerProviderElement(super.provider);
|
||||
final class AnimeStreamControllerFamily extends $Family
|
||||
with
|
||||
$ClassFamilyOverride<
|
||||
AnimeStreamController,
|
||||
KeepAliveLink,
|
||||
KeepAliveLink,
|
||||
KeepAliveLink,
|
||||
Chapter
|
||||
> {
|
||||
const AnimeStreamControllerFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'animeStreamControllerProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
AnimeStreamControllerProvider call({required Chapter episode}) =>
|
||||
AnimeStreamControllerProvider._(argument: episode, from: this);
|
||||
|
||||
@override
|
||||
Chapter get episode => (origin as AnimeStreamControllerProvider).episode;
|
||||
String toString() => r'animeStreamControllerProvider';
|
||||
}
|
||||
|
||||
// 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 _$AnimeStreamController extends $Notifier<KeepAliveLink> {
|
||||
late final _$args = ref.$arg as Chapter;
|
||||
Chapter get episode => _$args;
|
||||
|
||||
KeepAliveLink build({required Chapter episode});
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build(episode: _$args);
|
||||
final ref = this.ref as $Ref<KeepAliveLink, KeepAliveLink>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<KeepAliveLink, KeepAliveLink>,
|
||||
KeepAliveLink,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,25 +6,61 @@ part of 'state_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(SubtitleSettingsState)
|
||||
const subtitleSettingsStateProvider = SubtitleSettingsStateProvider._();
|
||||
|
||||
final class SubtitleSettingsStateProvider
|
||||
extends $NotifierProvider<SubtitleSettingsState, PlayerSubtitleSettings> {
|
||||
const SubtitleSettingsStateProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'subtitleSettingsStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$subtitleSettingsStateHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
SubtitleSettingsState create() => SubtitleSettingsState();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(PlayerSubtitleSettings value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<PlayerSubtitleSettings>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$subtitleSettingsStateHash() =>
|
||||
r'410485b55561b7a307c7a55f6798bca225f39830';
|
||||
|
||||
/// See also [SubtitleSettingsState].
|
||||
@ProviderFor(SubtitleSettingsState)
|
||||
final subtitleSettingsStateProvider =
|
||||
AutoDisposeNotifierProvider<
|
||||
SubtitleSettingsState,
|
||||
PlayerSubtitleSettings
|
||||
>.internal(
|
||||
SubtitleSettingsState.new,
|
||||
name: r'subtitleSettingsStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$subtitleSettingsStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$SubtitleSettingsState = AutoDisposeNotifier<PlayerSubtitleSettings>;
|
||||
// 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 _$SubtitleSettingsState
|
||||
extends $Notifier<PlayerSubtitleSettings> {
|
||||
PlayerSubtitleSettings build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref =
|
||||
this.ref as $Ref<PlayerSubtitleSettings, PlayerSubtitleSettings>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<PlayerSubtitleSettings, PlayerSubtitleSettings>,
|
||||
PlayerSubtitleSettings,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class _SubtitlesWidgetSearchState extends ConsumerState<SubtitlesWidgetSearch> {
|
|||
_init();
|
||||
}
|
||||
|
||||
_init() async {
|
||||
Future<void> _init() async {
|
||||
await Future.delayed(const Duration(microseconds: 100));
|
||||
try {
|
||||
titles = await fetchImdbTitles(query);
|
||||
|
|
@ -392,7 +392,7 @@ class _SubtitlesWidgetSearchState extends ConsumerState<SubtitlesWidgetSearch> {
|
|||
}
|
||||
}
|
||||
|
||||
subtitlesSearchraggableMenu(
|
||||
Future<dynamic> subtitlesSearchraggableMenu(
|
||||
BuildContext context, {
|
||||
required Chapter chapter,
|
||||
required bool isLocal,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
|
|
@ -48,7 +48,7 @@ class _BrowseScreenState extends ConsumerState<BrowseScreen>
|
|||
});
|
||||
}
|
||||
|
||||
_chekPermission() async {
|
||||
Future<void> _chekPermission() async {
|
||||
await StorageProvider().requestPermission();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/eval/model/source_preference.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/source_preference.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
|
|
@ -37,7 +37,7 @@ void setPreferenceSetting(SourcePreference sourcePreference, Source source) {
|
|||
});
|
||||
}
|
||||
|
||||
getPreferenceValue(int sourceId, String key) {
|
||||
dynamic getPreferenceValue(int sourceId, String key) {
|
||||
final sourcePreference = getSourcePreferenceEntry(key, sourceId);
|
||||
|
||||
if (sourcePreference.listPreference != null) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'extensions_provider.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,148 +6,81 @@ part of 'extensions_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getExtensionsStreamHash() =>
|
||||
r'18790d3d4a7f52e5e7239c8726dcd09bb51d803a';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [getExtensionsStream].
|
||||
@ProviderFor(getExtensionsStream)
|
||||
const getExtensionsStreamProvider = GetExtensionsStreamFamily();
|
||||
const getExtensionsStreamProvider = GetExtensionsStreamFamily._();
|
||||
|
||||
/// See also [getExtensionsStream].
|
||||
class GetExtensionsStreamFamily extends Family<AsyncValue<List<Source>>> {
|
||||
/// See also [getExtensionsStream].
|
||||
const GetExtensionsStreamFamily();
|
||||
final class GetExtensionsStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<Source>>,
|
||||
List<Source>,
|
||||
Stream<List<Source>>
|
||||
>
|
||||
with $FutureModifier<List<Source>>, $StreamProvider<List<Source>> {
|
||||
const GetExtensionsStreamProvider._({
|
||||
required GetExtensionsStreamFamily super.from,
|
||||
required ItemType super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getExtensionsStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [getExtensionsStream].
|
||||
GetExtensionsStreamProvider call(ItemType itemType) {
|
||||
return GetExtensionsStreamProvider(itemType);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getExtensionsStreamHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getExtensionsStreamProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
GetExtensionsStreamProvider getProviderOverride(
|
||||
covariant GetExtensionsStreamProvider provider,
|
||||
) {
|
||||
return call(provider.itemType);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
$StreamProviderElement<List<Source>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getExtensionsStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getExtensionsStream].
|
||||
class GetExtensionsStreamProvider
|
||||
extends AutoDisposeStreamProvider<List<Source>> {
|
||||
/// See also [getExtensionsStream].
|
||||
GetExtensionsStreamProvider(ItemType itemType)
|
||||
: this._internal(
|
||||
(ref) => getExtensionsStream(ref as GetExtensionsStreamRef, itemType),
|
||||
from: getExtensionsStreamProvider,
|
||||
name: r'getExtensionsStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getExtensionsStreamHash,
|
||||
dependencies: GetExtensionsStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetExtensionsStreamFamily._allTransitiveDependencies,
|
||||
itemType: itemType,
|
||||
);
|
||||
|
||||
GetExtensionsStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.itemType,
|
||||
}) : super.internal();
|
||||
|
||||
final ItemType itemType;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<List<Source>> Function(GetExtensionsStreamRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetExtensionsStreamProvider._internal(
|
||||
(ref) => create(ref as GetExtensionsStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
itemType: itemType,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<List<Source>> createElement() {
|
||||
return _GetExtensionsStreamProviderElement(this);
|
||||
Stream<List<Source>> create(Ref ref) {
|
||||
final argument = this.argument as ItemType;
|
||||
return getExtensionsStream(ref, argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetExtensionsStreamProvider && other.itemType == itemType;
|
||||
return other is GetExtensionsStreamProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetExtensionsStreamRef on AutoDisposeStreamProviderRef<List<Source>> {
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType get itemType;
|
||||
}
|
||||
String _$getExtensionsStreamHash() =>
|
||||
r'18790d3d4a7f52e5e7239c8726dcd09bb51d803a';
|
||||
|
||||
class _GetExtensionsStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<List<Source>>
|
||||
with GetExtensionsStreamRef {
|
||||
_GetExtensionsStreamProviderElement(super.provider);
|
||||
final class GetExtensionsStreamFamily extends $Family
|
||||
with $FunctionalFamilyOverride<Stream<List<Source>>, ItemType> {
|
||||
const GetExtensionsStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getExtensionsStreamProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetExtensionsStreamProvider call(ItemType itemType) =>
|
||||
GetExtensionsStreamProvider._(argument: itemType, from: this);
|
||||
|
||||
@override
|
||||
ItemType get itemType => (origin as GetExtensionsStreamProvider).itemType;
|
||||
String toString() => r'getExtensionsStreamProvider';
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/source_preference.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/changed.dart';
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'dart:typed_data';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_manga.dart';
|
||||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
|
|
@ -143,7 +143,7 @@ class _SourceSearchScreenState extends ConsumerState<SourceSearchScreen> {
|
|||
String _errorMessage = "";
|
||||
bool _isLoading = true;
|
||||
MPages? pages;
|
||||
_init() async {
|
||||
Future<void> _init() async {
|
||||
try {
|
||||
_errorMessage = "";
|
||||
pages = await ref.read(
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import 'dart:typed_data';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/modules/calendar/providers/calendar_provider.dart';
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'calendar_provider.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,147 +6,80 @@ part of 'calendar_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getCalendarStreamHash() => r'850d81742f8ac5ce88175732c0edf57a7a9295d4';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [getCalendarStream].
|
||||
@ProviderFor(getCalendarStream)
|
||||
const getCalendarStreamProvider = GetCalendarStreamFamily();
|
||||
const getCalendarStreamProvider = GetCalendarStreamFamily._();
|
||||
|
||||
/// See also [getCalendarStream].
|
||||
class GetCalendarStreamFamily extends Family<AsyncValue<List<Manga>>> {
|
||||
/// See also [getCalendarStream].
|
||||
const GetCalendarStreamFamily();
|
||||
final class GetCalendarStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<Manga>>,
|
||||
List<Manga>,
|
||||
Stream<List<Manga>>
|
||||
>
|
||||
with $FutureModifier<List<Manga>>, $StreamProvider<List<Manga>> {
|
||||
const GetCalendarStreamProvider._({
|
||||
required GetCalendarStreamFamily super.from,
|
||||
required ItemType? super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getCalendarStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [getCalendarStream].
|
||||
GetCalendarStreamProvider call({ItemType? itemType}) {
|
||||
return GetCalendarStreamProvider(itemType: itemType);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getCalendarStreamHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getCalendarStreamProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
GetCalendarStreamProvider getProviderOverride(
|
||||
covariant GetCalendarStreamProvider provider,
|
||||
) {
|
||||
return call(itemType: provider.itemType);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
$StreamProviderElement<List<Manga>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getCalendarStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getCalendarStream].
|
||||
class GetCalendarStreamProvider extends AutoDisposeStreamProvider<List<Manga>> {
|
||||
/// See also [getCalendarStream].
|
||||
GetCalendarStreamProvider({ItemType? itemType})
|
||||
: this._internal(
|
||||
(ref) =>
|
||||
getCalendarStream(ref as GetCalendarStreamRef, itemType: itemType),
|
||||
from: getCalendarStreamProvider,
|
||||
name: r'getCalendarStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getCalendarStreamHash,
|
||||
dependencies: GetCalendarStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetCalendarStreamFamily._allTransitiveDependencies,
|
||||
itemType: itemType,
|
||||
);
|
||||
|
||||
GetCalendarStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.itemType,
|
||||
}) : super.internal();
|
||||
|
||||
final ItemType? itemType;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<List<Manga>> Function(GetCalendarStreamRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetCalendarStreamProvider._internal(
|
||||
(ref) => create(ref as GetCalendarStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
itemType: itemType,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<List<Manga>> createElement() {
|
||||
return _GetCalendarStreamProviderElement(this);
|
||||
Stream<List<Manga>> create(Ref ref) {
|
||||
final argument = this.argument as ItemType?;
|
||||
return getCalendarStream(ref, itemType: argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetCalendarStreamProvider && other.itemType == itemType;
|
||||
return other is GetCalendarStreamProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetCalendarStreamRef on AutoDisposeStreamProviderRef<List<Manga>> {
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType? get itemType;
|
||||
}
|
||||
String _$getCalendarStreamHash() => r'850d81742f8ac5ce88175732c0edf57a7a9295d4';
|
||||
|
||||
class _GetCalendarStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<List<Manga>>
|
||||
with GetCalendarStreamRef {
|
||||
_GetCalendarStreamProviderElement(super.provider);
|
||||
final class GetCalendarStreamFamily extends $Family
|
||||
with $FunctionalFamilyOverride<Stream<List<Manga>>, ItemType?> {
|
||||
const GetCalendarStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getCalendarStreamProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetCalendarStreamProvider call({ItemType? itemType}) =>
|
||||
GetCalendarStreamProvider._(argument: itemType, from: this);
|
||||
|
||||
@override
|
||||
ItemType? get itemType => (origin as GetCalendarStreamProvider).itemType;
|
||||
String toString() => r'getCalendarStreamProvider';
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import 'package:go_router/go_router.dart';
|
|||
import 'package:mangayomi/l10n/generated/app_localizations.dart';
|
||||
import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart';
|
||||
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/changed.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/update.dart';
|
||||
import 'package:mangayomi/models/history.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'isar_providers.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,308 +6,183 @@ part of 'isar_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getAllHistoryStreamHash() =>
|
||||
r'1ce5bd0046fbbec46e91b7a486523945699d95f3';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [getAllHistoryStream].
|
||||
@ProviderFor(getAllHistoryStream)
|
||||
const getAllHistoryStreamProvider = GetAllHistoryStreamFamily();
|
||||
const getAllHistoryStreamProvider = GetAllHistoryStreamFamily._();
|
||||
|
||||
/// See also [getAllHistoryStream].
|
||||
class GetAllHistoryStreamFamily extends Family<AsyncValue<List<History>>> {
|
||||
/// See also [getAllHistoryStream].
|
||||
const GetAllHistoryStreamFamily();
|
||||
final class GetAllHistoryStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<History>>,
|
||||
List<History>,
|
||||
Stream<List<History>>
|
||||
>
|
||||
with $FutureModifier<List<History>>, $StreamProvider<List<History>> {
|
||||
const GetAllHistoryStreamProvider._({
|
||||
required GetAllHistoryStreamFamily super.from,
|
||||
required ({ItemType itemType, String search}) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getAllHistoryStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [getAllHistoryStream].
|
||||
GetAllHistoryStreamProvider call({
|
||||
required ItemType itemType,
|
||||
String search = "",
|
||||
}) {
|
||||
return GetAllHistoryStreamProvider(itemType: itemType, search: search);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getAllHistoryStreamHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getAllHistoryStreamProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
GetAllHistoryStreamProvider getProviderOverride(
|
||||
covariant GetAllHistoryStreamProvider provider,
|
||||
) {
|
||||
return call(itemType: provider.itemType, search: provider.search);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
$StreamProviderElement<List<History>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getAllHistoryStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getAllHistoryStream].
|
||||
class GetAllHistoryStreamProvider
|
||||
extends AutoDisposeStreamProvider<List<History>> {
|
||||
/// See also [getAllHistoryStream].
|
||||
GetAllHistoryStreamProvider({required ItemType itemType, String search = ""})
|
||||
: this._internal(
|
||||
(ref) => getAllHistoryStream(
|
||||
ref as GetAllHistoryStreamRef,
|
||||
itemType: itemType,
|
||||
search: search,
|
||||
),
|
||||
from: getAllHistoryStreamProvider,
|
||||
name: r'getAllHistoryStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getAllHistoryStreamHash,
|
||||
dependencies: GetAllHistoryStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetAllHistoryStreamFamily._allTransitiveDependencies,
|
||||
itemType: itemType,
|
||||
search: search,
|
||||
);
|
||||
|
||||
GetAllHistoryStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.itemType,
|
||||
required this.search,
|
||||
}) : super.internal();
|
||||
|
||||
final ItemType itemType;
|
||||
final String search;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<List<History>> Function(GetAllHistoryStreamRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetAllHistoryStreamProvider._internal(
|
||||
(ref) => create(ref as GetAllHistoryStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
itemType: itemType,
|
||||
search: search,
|
||||
),
|
||||
Stream<List<History>> create(Ref ref) {
|
||||
final argument = this.argument as ({ItemType itemType, String search});
|
||||
return getAllHistoryStream(
|
||||
ref,
|
||||
itemType: argument.itemType,
|
||||
search: argument.search,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<List<History>> createElement() {
|
||||
return _GetAllHistoryStreamProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetAllHistoryStreamProvider &&
|
||||
other.itemType == itemType &&
|
||||
other.search == search;
|
||||
return other is GetAllHistoryStreamProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
hash = _SystemHash.combine(hash, search.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetAllHistoryStreamRef on AutoDisposeStreamProviderRef<List<History>> {
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType get itemType;
|
||||
String _$getAllHistoryStreamHash() =>
|
||||
r'1ce5bd0046fbbec46e91b7a486523945699d95f3';
|
||||
|
||||
/// The parameter `search` of this provider.
|
||||
String get search;
|
||||
final class GetAllHistoryStreamFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
Stream<List<History>>,
|
||||
({ItemType itemType, String search})
|
||||
> {
|
||||
const GetAllHistoryStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getAllHistoryStreamProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetAllHistoryStreamProvider call({
|
||||
required ItemType itemType,
|
||||
String search = '',
|
||||
}) => GetAllHistoryStreamProvider._(
|
||||
argument: (itemType: itemType, search: search),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
String toString() => r'getAllHistoryStreamProvider';
|
||||
}
|
||||
|
||||
class _GetAllHistoryStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<List<History>>
|
||||
with GetAllHistoryStreamRef {
|
||||
_GetAllHistoryStreamProviderElement(super.provider);
|
||||
@ProviderFor(getAllUpdateStream)
|
||||
const getAllUpdateStreamProvider = GetAllUpdateStreamFamily._();
|
||||
|
||||
final class GetAllUpdateStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<Update>>,
|
||||
List<Update>,
|
||||
Stream<List<Update>>
|
||||
>
|
||||
with $FutureModifier<List<Update>>, $StreamProvider<List<Update>> {
|
||||
const GetAllUpdateStreamProvider._({
|
||||
required GetAllUpdateStreamFamily super.from,
|
||||
required ({ItemType itemType, String search}) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getAllUpdateStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
ItemType get itemType => (origin as GetAllHistoryStreamProvider).itemType;
|
||||
String debugGetCreateSourceHash() => _$getAllUpdateStreamHash();
|
||||
|
||||
@override
|
||||
String get search => (origin as GetAllHistoryStreamProvider).search;
|
||||
String toString() {
|
||||
return r'getAllUpdateStreamProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$StreamProviderElement<List<Update>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Stream<List<Update>> create(Ref ref) {
|
||||
final argument = this.argument as ({ItemType itemType, String search});
|
||||
return getAllUpdateStream(
|
||||
ref,
|
||||
itemType: argument.itemType,
|
||||
search: argument.search,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetAllUpdateStreamProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
String _$getAllUpdateStreamHash() =>
|
||||
r'43369b20d702d12aeae627fcd04ceb61caf0dc74';
|
||||
|
||||
/// See also [getAllUpdateStream].
|
||||
@ProviderFor(getAllUpdateStream)
|
||||
const getAllUpdateStreamProvider = GetAllUpdateStreamFamily();
|
||||
|
||||
/// See also [getAllUpdateStream].
|
||||
class GetAllUpdateStreamFamily extends Family<AsyncValue<List<Update>>> {
|
||||
/// See also [getAllUpdateStream].
|
||||
const GetAllUpdateStreamFamily();
|
||||
|
||||
/// See also [getAllUpdateStream].
|
||||
GetAllUpdateStreamProvider call({
|
||||
required ItemType itemType,
|
||||
String search = "",
|
||||
}) {
|
||||
return GetAllUpdateStreamProvider(itemType: itemType, search: search);
|
||||
}
|
||||
|
||||
@override
|
||||
GetAllUpdateStreamProvider getProviderOverride(
|
||||
covariant GetAllUpdateStreamProvider provider,
|
||||
) {
|
||||
return call(itemType: provider.itemType, search: provider.search);
|
||||
}
|
||||
|
||||
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'getAllUpdateStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getAllUpdateStream].
|
||||
class GetAllUpdateStreamProvider
|
||||
extends AutoDisposeStreamProvider<List<Update>> {
|
||||
/// See also [getAllUpdateStream].
|
||||
GetAllUpdateStreamProvider({required ItemType itemType, String search = ""})
|
||||
: this._internal(
|
||||
(ref) => getAllUpdateStream(
|
||||
ref as GetAllUpdateStreamRef,
|
||||
itemType: itemType,
|
||||
search: search,
|
||||
),
|
||||
from: getAllUpdateStreamProvider,
|
||||
final class GetAllUpdateStreamFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
Stream<List<Update>>,
|
||||
({ItemType itemType, String search})
|
||||
> {
|
||||
const GetAllUpdateStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getAllUpdateStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getAllUpdateStreamHash,
|
||||
dependencies: GetAllUpdateStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetAllUpdateStreamFamily._allTransitiveDependencies,
|
||||
itemType: itemType,
|
||||
search: search,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetAllUpdateStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.itemType,
|
||||
required this.search,
|
||||
}) : super.internal();
|
||||
|
||||
final ItemType itemType;
|
||||
final String search;
|
||||
GetAllUpdateStreamProvider call({
|
||||
required ItemType itemType,
|
||||
String search = '',
|
||||
}) => GetAllUpdateStreamProvider._(
|
||||
argument: (itemType: itemType, search: search),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<List<Update>> Function(GetAllUpdateStreamRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetAllUpdateStreamProvider._internal(
|
||||
(ref) => create(ref as GetAllUpdateStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
itemType: itemType,
|
||||
search: search,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<List<Update>> createElement() {
|
||||
return _GetAllUpdateStreamProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetAllUpdateStreamProvider &&
|
||||
other.itemType == itemType &&
|
||||
other.search == search;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
hash = _SystemHash.combine(hash, search.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
String toString() => r'getAllUpdateStreamProvider';
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetAllUpdateStreamRef on AutoDisposeStreamProviderRef<List<Update>> {
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType get itemType;
|
||||
|
||||
/// The parameter `search` of this provider.
|
||||
String get search;
|
||||
}
|
||||
|
||||
class _GetAllUpdateStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<List<Update>>
|
||||
with GetAllUpdateStreamRef {
|
||||
_GetAllUpdateStreamProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
ItemType get itemType => (origin as GetAllUpdateStreamProvider).itemType;
|
||||
@override
|
||||
String get search => (origin as GetAllUpdateStreamProvider).search;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import 'package:bot_toast/bot_toast.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/changed.dart';
|
||||
|
|
@ -43,6 +43,7 @@ import 'package:mangayomi/modules/widgets/progress_center.dart';
|
|||
import 'package:mangayomi/utils/extensions/string_extensions.dart';
|
||||
import 'package:mangayomi/utils/global_style.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
class LibraryScreen extends ConsumerStatefulWidget {
|
||||
final ItemType itemType;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import 'package:mangayomi/models/chapter.dart';
|
|||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/services/torrent_server.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'add_torrent.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,183 +6,92 @@ part of 'add_torrent.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$addTorrentFromUrlOrFromFileHash() =>
|
||||
r'a54f90b6708b13eeb8fed098691f9a79dbab50fd';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [addTorrentFromUrlOrFromFile].
|
||||
@ProviderFor(addTorrentFromUrlOrFromFile)
|
||||
const addTorrentFromUrlOrFromFileProvider = AddTorrentFromUrlOrFromFileFamily();
|
||||
const addTorrentFromUrlOrFromFileProvider =
|
||||
AddTorrentFromUrlOrFromFileFamily._();
|
||||
|
||||
/// See also [addTorrentFromUrlOrFromFile].
|
||||
class AddTorrentFromUrlOrFromFileFamily extends Family<AsyncValue> {
|
||||
/// See also [addTorrentFromUrlOrFromFile].
|
||||
const AddTorrentFromUrlOrFromFileFamily();
|
||||
|
||||
/// See also [addTorrentFromUrlOrFromFile].
|
||||
AddTorrentFromUrlOrFromFileProvider call(
|
||||
Manga? mManga, {
|
||||
required bool init,
|
||||
String? url,
|
||||
}) {
|
||||
return AddTorrentFromUrlOrFromFileProvider(mManga, init: init, url: url);
|
||||
}
|
||||
|
||||
@override
|
||||
AddTorrentFromUrlOrFromFileProvider getProviderOverride(
|
||||
covariant AddTorrentFromUrlOrFromFileProvider provider,
|
||||
) {
|
||||
return call(provider.mManga, init: provider.init, url: provider.url);
|
||||
}
|
||||
|
||||
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'addTorrentFromUrlOrFromFileProvider';
|
||||
}
|
||||
|
||||
/// See also [addTorrentFromUrlOrFromFile].
|
||||
class AddTorrentFromUrlOrFromFileProvider
|
||||
extends AutoDisposeFutureProvider<Object?> {
|
||||
/// See also [addTorrentFromUrlOrFromFile].
|
||||
AddTorrentFromUrlOrFromFileProvider(
|
||||
Manga? mManga, {
|
||||
required bool init,
|
||||
String? url,
|
||||
}) : this._internal(
|
||||
(ref) => addTorrentFromUrlOrFromFile(
|
||||
ref as AddTorrentFromUrlOrFromFileRef,
|
||||
mManga,
|
||||
init: init,
|
||||
url: url,
|
||||
),
|
||||
from: addTorrentFromUrlOrFromFileProvider,
|
||||
final class AddTorrentFromUrlOrFromFileProvider
|
||||
extends $FunctionalProvider<AsyncValue<dynamic>, dynamic, FutureOr<dynamic>>
|
||||
with $FutureModifier<dynamic>, $FutureProvider<dynamic> {
|
||||
const AddTorrentFromUrlOrFromFileProvider._({
|
||||
required AddTorrentFromUrlOrFromFileFamily super.from,
|
||||
required (Manga?, {bool init, String? url}) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'addTorrentFromUrlOrFromFileProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$addTorrentFromUrlOrFromFileHash,
|
||||
dependencies: AddTorrentFromUrlOrFromFileFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
AddTorrentFromUrlOrFromFileFamily._allTransitiveDependencies,
|
||||
mManga: mManga,
|
||||
init: init,
|
||||
url: url,
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
AddTorrentFromUrlOrFromFileProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.mManga,
|
||||
required this.init,
|
||||
required this.url,
|
||||
}) : super.internal();
|
||||
|
||||
final Manga? mManga;
|
||||
final bool init;
|
||||
final String? url;
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$addTorrentFromUrlOrFromFileHash();
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<Object?> Function(AddTorrentFromUrlOrFromFileRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: AddTorrentFromUrlOrFromFileProvider._internal(
|
||||
(ref) => create(ref as AddTorrentFromUrlOrFromFileRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
mManga: mManga,
|
||||
init: init,
|
||||
url: url,
|
||||
),
|
||||
);
|
||||
String toString() {
|
||||
return r'addTorrentFromUrlOrFromFileProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<Object?> createElement() {
|
||||
return _AddTorrentFromUrlOrFromFileProviderElement(this);
|
||||
$FutureProviderElement<dynamic> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<dynamic> create(Ref ref) {
|
||||
final argument = this.argument as (Manga?, {bool init, String? url});
|
||||
return addTorrentFromUrlOrFromFile(
|
||||
ref,
|
||||
argument.$1,
|
||||
init: argument.init,
|
||||
url: argument.url,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is AddTorrentFromUrlOrFromFileProvider &&
|
||||
other.mManga == mManga &&
|
||||
other.init == init &&
|
||||
other.url == url;
|
||||
other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mManga.hashCode);
|
||||
hash = _SystemHash.combine(hash, init.hashCode);
|
||||
hash = _SystemHash.combine(hash, url.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin AddTorrentFromUrlOrFromFileRef on AutoDisposeFutureProviderRef<Object?> {
|
||||
/// The parameter `mManga` of this provider.
|
||||
Manga? get mManga;
|
||||
String _$addTorrentFromUrlOrFromFileHash() =>
|
||||
r'a54f90b6708b13eeb8fed098691f9a79dbab50fd';
|
||||
|
||||
/// The parameter `init` of this provider.
|
||||
bool get init;
|
||||
final class AddTorrentFromUrlOrFromFileFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<dynamic>,
|
||||
(Manga?, {bool init, String? url})
|
||||
> {
|
||||
const AddTorrentFromUrlOrFromFileFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'addTorrentFromUrlOrFromFileProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
/// The parameter `url` of this provider.
|
||||
String? get url;
|
||||
AddTorrentFromUrlOrFromFileProvider call(
|
||||
Manga? mManga, {
|
||||
required bool init,
|
||||
String? url,
|
||||
}) => AddTorrentFromUrlOrFromFileProvider._(
|
||||
argument: (mManga, init: init, url: url),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
String toString() => r'addTorrentFromUrlOrFromFileProvider';
|
||||
}
|
||||
|
||||
class _AddTorrentFromUrlOrFromFileProviderElement
|
||||
extends AutoDisposeFutureProviderElement<Object?>
|
||||
with AddTorrentFromUrlOrFromFileRef {
|
||||
_AddTorrentFromUrlOrFromFileProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Manga? get mManga => (origin as AddTorrentFromUrlOrFromFileProvider).mManga;
|
||||
@override
|
||||
bool get init => (origin as AddTorrentFromUrlOrFromFileProvider).init;
|
||||
@override
|
||||
String? get url => (origin as AddTorrentFromUrlOrFromFileProvider).url;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'dart:convert';
|
||||
import 'dart:io'; // For I/O-operations
|
||||
import 'package:epubx/epubx.dart';
|
||||
import 'package:isar/isar.dart'; // Isar database package for local storage
|
||||
import 'package:isar_community/isar.dart'; // Isar database package for local storage
|
||||
import 'package:mangayomi/main.dart'; // Exposes the global `isar` instance
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
import 'package:mangayomi/utils/extensions/others.dart';
|
||||
|
|
@ -9,7 +9,6 @@ import 'package:path/path.dart' as p; // For manipulating file system paths
|
|||
import 'package:bot_toast/bot_toast.dart'; // For Exceptions
|
||||
import 'package:mangayomi/models/manga.dart'; // Has Manga model and ItemType enum
|
||||
import 'package:mangayomi/models/chapter.dart'; // Has Chapter model with archivePath
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart'; // Riverpod state management
|
||||
import 'package:mangayomi/providers/storage_provider.dart'; // Provides storage directory selection
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart'; // Annotations for code generation
|
||||
part 'file_scanner.g.dart';
|
||||
|
|
@ -387,7 +386,7 @@ Future<Directory?> getLocalLibrary() async {
|
|||
/// becomes:
|
||||
/// "Manga 1/chapter1.zip"
|
||||
/// ```
|
||||
String _getRelativePath(dir) {
|
||||
String _getRelativePath(dynamic dir) {
|
||||
String relativePath;
|
||||
|
||||
if (dir is Directory) {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,61 @@ part of 'file_scanner.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$scanLocalLibraryHash() => r'7fdedaa37917728d9f3b9d8f15090c94bdb34238';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(LocalFoldersState)
|
||||
const localFoldersStateProvider = LocalFoldersStateProvider._();
|
||||
|
||||
final class LocalFoldersStateProvider
|
||||
extends $NotifierProvider<LocalFoldersState, List<String>> {
|
||||
const LocalFoldersStateProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'localFoldersStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$localFoldersStateHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
LocalFoldersState create() => LocalFoldersState();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(List<String> value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<List<String>>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$localFoldersStateHash() => r'7cf7902ad34ee5ae018b2c9ac3849e822bc5f0b7';
|
||||
|
||||
abstract class _$LocalFoldersState extends $Notifier<List<String>> {
|
||||
List<String> build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<List<String>, List<String>>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<List<String>, List<String>>,
|
||||
List<String>,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
/// Scans `Mangayomi/local` folder (if exists) for Mangas/Animes and imports in library.
|
||||
///
|
||||
|
|
@ -25,37 +79,71 @@ String _$scanLocalLibraryHash() => r'7fdedaa37917728d9f3b9d8f15090c94bdb34238';
|
|||
/// Archivetypes: cbz, zip, cbt, tar
|
||||
/// Other types: epub
|
||||
/// ```
|
||||
///
|
||||
/// Copied from [scanLocalLibrary].
|
||||
|
||||
@ProviderFor(scanLocalLibrary)
|
||||
final scanLocalLibraryProvider = AutoDisposeFutureProvider<void>.internal(
|
||||
scanLocalLibrary,
|
||||
name: r'scanLocalLibraryProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$scanLocalLibraryHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
const scanLocalLibraryProvider = ScanLocalLibraryProvider._();
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef ScanLocalLibraryRef = AutoDisposeFutureProviderRef<void>;
|
||||
String _$localFoldersStateHash() => r'7cf7902ad34ee5ae018b2c9ac3849e822bc5f0b7';
|
||||
/// Scans `Mangayomi/local` folder (if exists) for Mangas/Animes and imports in library.
|
||||
///
|
||||
/// **Folder structure:**
|
||||
/// ```
|
||||
/// Mangayomi/local/MangaName/CustomCover.jpg (optional)
|
||||
/// Mangayomi/local/MangaName/Chapter1/Page1.jpg
|
||||
/// Mangayomi/local/MangaName/Chapter2.cbz
|
||||
/// Mangayomi/local/AnimeName/Episode1.mp4
|
||||
/// Mangayomi/local/NovelName/NovelName.epub
|
||||
/// ```
|
||||
/// **Supported filetypes:** (taken from lib/modules/library/providers/local_archive.dart, line 98)
|
||||
/// ```
|
||||
/// Videotypes: mp4, mov, avi, flv, wmv, mpeg, mkv
|
||||
/// Imagetypes: jpg, jpeg, png, webp
|
||||
/// Archivetypes: cbz, zip, cbt, tar
|
||||
/// Other types: epub
|
||||
/// ```
|
||||
|
||||
/// See also [LocalFoldersState].
|
||||
@ProviderFor(LocalFoldersState)
|
||||
final localFoldersStateProvider =
|
||||
AutoDisposeNotifierProvider<LocalFoldersState, List<String>>.internal(
|
||||
LocalFoldersState.new,
|
||||
name: r'localFoldersStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$localFoldersStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
final class ScanLocalLibraryProvider
|
||||
extends $FunctionalProvider<AsyncValue<void>, void, FutureOr<void>>
|
||||
with $FutureModifier<void>, $FutureProvider<void> {
|
||||
/// Scans `Mangayomi/local` folder (if exists) for Mangas/Animes and imports in library.
|
||||
///
|
||||
/// **Folder structure:**
|
||||
/// ```
|
||||
/// Mangayomi/local/MangaName/CustomCover.jpg (optional)
|
||||
/// Mangayomi/local/MangaName/Chapter1/Page1.jpg
|
||||
/// Mangayomi/local/MangaName/Chapter2.cbz
|
||||
/// Mangayomi/local/AnimeName/Episode1.mp4
|
||||
/// Mangayomi/local/NovelName/NovelName.epub
|
||||
/// ```
|
||||
/// **Supported filetypes:** (taken from lib/modules/library/providers/local_archive.dart, line 98)
|
||||
/// ```
|
||||
/// Videotypes: mp4, mov, avi, flv, wmv, mpeg, mkv
|
||||
/// Imagetypes: jpg, jpeg, png, webp
|
||||
/// Archivetypes: cbz, zip, cbt, tar
|
||||
/// Other types: epub
|
||||
/// ```
|
||||
const ScanLocalLibraryProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'scanLocalLibraryProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$LocalFoldersState = AutoDisposeNotifier<List<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
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$scanLocalLibraryHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<void> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<void> create(Ref ref) {
|
||||
return scanLocalLibrary(ref);
|
||||
}
|
||||
}
|
||||
|
||||
String _$scanLocalLibraryHash() => r'7fdedaa37917728d9f3b9d8f15090c94bdb34238';
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'isar_providers.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,321 +6,215 @@ part of 'isar_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getAllMangaStreamHash() => r'5e86a22a68ca1a52aefa9c0bc675d284369beac5';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [getAllMangaStream].
|
||||
@ProviderFor(getAllMangaStream)
|
||||
const getAllMangaStreamProvider = GetAllMangaStreamFamily();
|
||||
const getAllMangaStreamProvider = GetAllMangaStreamFamily._();
|
||||
|
||||
/// See also [getAllMangaStream].
|
||||
class GetAllMangaStreamFamily extends Family<AsyncValue<List<Manga>>> {
|
||||
/// See also [getAllMangaStream].
|
||||
const GetAllMangaStreamFamily();
|
||||
|
||||
/// See also [getAllMangaStream].
|
||||
GetAllMangaStreamProvider call({
|
||||
required int? categoryId,
|
||||
required ItemType itemType,
|
||||
}) {
|
||||
return GetAllMangaStreamProvider(
|
||||
categoryId: categoryId,
|
||||
itemType: itemType,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
GetAllMangaStreamProvider getProviderOverride(
|
||||
covariant GetAllMangaStreamProvider provider,
|
||||
) {
|
||||
return call(categoryId: provider.categoryId, itemType: provider.itemType);
|
||||
}
|
||||
|
||||
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'getAllMangaStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getAllMangaStream].
|
||||
class GetAllMangaStreamProvider extends AutoDisposeStreamProvider<List<Manga>> {
|
||||
/// See also [getAllMangaStream].
|
||||
GetAllMangaStreamProvider({
|
||||
required int? categoryId,
|
||||
required ItemType itemType,
|
||||
}) : this._internal(
|
||||
(ref) => getAllMangaStream(
|
||||
ref as GetAllMangaStreamRef,
|
||||
categoryId: categoryId,
|
||||
itemType: itemType,
|
||||
),
|
||||
from: getAllMangaStreamProvider,
|
||||
final class GetAllMangaStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<Manga>>,
|
||||
List<Manga>,
|
||||
Stream<List<Manga>>
|
||||
>
|
||||
with $FutureModifier<List<Manga>>, $StreamProvider<List<Manga>> {
|
||||
const GetAllMangaStreamProvider._({
|
||||
required GetAllMangaStreamFamily super.from,
|
||||
required ({int? categoryId, ItemType itemType}) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getAllMangaStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getAllMangaStreamHash,
|
||||
dependencies: GetAllMangaStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetAllMangaStreamFamily._allTransitiveDependencies,
|
||||
categoryId: categoryId,
|
||||
itemType: itemType,
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
GetAllMangaStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.categoryId,
|
||||
required this.itemType,
|
||||
}) : super.internal();
|
||||
|
||||
final int? categoryId;
|
||||
final ItemType itemType;
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getAllMangaStreamHash();
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<List<Manga>> Function(GetAllMangaStreamRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetAllMangaStreamProvider._internal(
|
||||
(ref) => create(ref as GetAllMangaStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
categoryId: categoryId,
|
||||
itemType: itemType,
|
||||
),
|
||||
);
|
||||
String toString() {
|
||||
return r'getAllMangaStreamProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<List<Manga>> createElement() {
|
||||
return _GetAllMangaStreamProviderElement(this);
|
||||
$StreamProviderElement<List<Manga>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Stream<List<Manga>> create(Ref ref) {
|
||||
final argument = this.argument as ({int? categoryId, ItemType itemType});
|
||||
return getAllMangaStream(
|
||||
ref,
|
||||
categoryId: argument.categoryId,
|
||||
itemType: argument.itemType,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetAllMangaStreamProvider &&
|
||||
other.categoryId == categoryId &&
|
||||
other.itemType == itemType;
|
||||
return other is GetAllMangaStreamProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, categoryId.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetAllMangaStreamRef on AutoDisposeStreamProviderRef<List<Manga>> {
|
||||
/// The parameter `categoryId` of this provider.
|
||||
int? get categoryId;
|
||||
String _$getAllMangaStreamHash() => r'5e86a22a68ca1a52aefa9c0bc675d284369beac5';
|
||||
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType get itemType;
|
||||
}
|
||||
|
||||
class _GetAllMangaStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<List<Manga>>
|
||||
with GetAllMangaStreamRef {
|
||||
_GetAllMangaStreamProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
int? get categoryId => (origin as GetAllMangaStreamProvider).categoryId;
|
||||
@override
|
||||
ItemType get itemType => (origin as GetAllMangaStreamProvider).itemType;
|
||||
}
|
||||
|
||||
String _$getAllMangaWithoutCategoriesStreamHash() =>
|
||||
r'61ea54070c7e87a45aeabce5fd21366faaf4ae6d';
|
||||
|
||||
/// See also [getAllMangaWithoutCategoriesStream].
|
||||
@ProviderFor(getAllMangaWithoutCategoriesStream)
|
||||
const getAllMangaWithoutCategoriesStreamProvider =
|
||||
GetAllMangaWithoutCategoriesStreamFamily();
|
||||
|
||||
/// See also [getAllMangaWithoutCategoriesStream].
|
||||
class GetAllMangaWithoutCategoriesStreamFamily
|
||||
extends Family<AsyncValue<List<Manga>>> {
|
||||
/// See also [getAllMangaWithoutCategoriesStream].
|
||||
const GetAllMangaWithoutCategoriesStreamFamily();
|
||||
|
||||
/// See also [getAllMangaWithoutCategoriesStream].
|
||||
GetAllMangaWithoutCategoriesStreamProvider call({
|
||||
required ItemType itemType,
|
||||
}) {
|
||||
return GetAllMangaWithoutCategoriesStreamProvider(itemType: itemType);
|
||||
}
|
||||
|
||||
@override
|
||||
GetAllMangaWithoutCategoriesStreamProvider getProviderOverride(
|
||||
covariant GetAllMangaWithoutCategoriesStreamProvider provider,
|
||||
) {
|
||||
return call(itemType: provider.itemType);
|
||||
}
|
||||
|
||||
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'getAllMangaWithoutCategoriesStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getAllMangaWithoutCategoriesStream].
|
||||
class GetAllMangaWithoutCategoriesStreamProvider
|
||||
extends AutoDisposeStreamProvider<List<Manga>> {
|
||||
/// See also [getAllMangaWithoutCategoriesStream].
|
||||
GetAllMangaWithoutCategoriesStreamProvider({required ItemType itemType})
|
||||
: this._internal(
|
||||
(ref) => getAllMangaWithoutCategoriesStream(
|
||||
ref as GetAllMangaWithoutCategoriesStreamRef,
|
||||
itemType: itemType,
|
||||
),
|
||||
from: getAllMangaWithoutCategoriesStreamProvider,
|
||||
name: r'getAllMangaWithoutCategoriesStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getAllMangaWithoutCategoriesStreamHash,
|
||||
dependencies: GetAllMangaWithoutCategoriesStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetAllMangaWithoutCategoriesStreamFamily._allTransitiveDependencies,
|
||||
itemType: itemType,
|
||||
final class GetAllMangaStreamFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
Stream<List<Manga>>,
|
||||
({int? categoryId, ItemType itemType})
|
||||
> {
|
||||
const GetAllMangaStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getAllMangaStreamProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetAllMangaWithoutCategoriesStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.itemType,
|
||||
}) : super.internal();
|
||||
|
||||
final ItemType itemType;
|
||||
GetAllMangaStreamProvider call({
|
||||
required int? categoryId,
|
||||
required ItemType itemType,
|
||||
}) => GetAllMangaStreamProvider._(
|
||||
argument: (categoryId: categoryId, itemType: itemType),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<List<Manga>> Function(GetAllMangaWithoutCategoriesStreamRef provider)
|
||||
create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetAllMangaWithoutCategoriesStreamProvider._internal(
|
||||
(ref) => create(ref as GetAllMangaWithoutCategoriesStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
itemType: itemType,
|
||||
),
|
||||
);
|
||||
String toString() => r'getAllMangaStreamProvider';
|
||||
}
|
||||
|
||||
@ProviderFor(getAllMangaWithoutCategoriesStream)
|
||||
const getAllMangaWithoutCategoriesStreamProvider =
|
||||
GetAllMangaWithoutCategoriesStreamFamily._();
|
||||
|
||||
final class GetAllMangaWithoutCategoriesStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<Manga>>,
|
||||
List<Manga>,
|
||||
Stream<List<Manga>>
|
||||
>
|
||||
with $FutureModifier<List<Manga>>, $StreamProvider<List<Manga>> {
|
||||
const GetAllMangaWithoutCategoriesStreamProvider._({
|
||||
required GetAllMangaWithoutCategoriesStreamFamily super.from,
|
||||
required ItemType super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getAllMangaWithoutCategoriesStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() =>
|
||||
_$getAllMangaWithoutCategoriesStreamHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getAllMangaWithoutCategoriesStreamProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<List<Manga>> createElement() {
|
||||
return _GetAllMangaWithoutCategoriesStreamProviderElement(this);
|
||||
$StreamProviderElement<List<Manga>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Stream<List<Manga>> create(Ref ref) {
|
||||
final argument = this.argument as ItemType;
|
||||
return getAllMangaWithoutCategoriesStream(ref, itemType: argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetAllMangaWithoutCategoriesStreamProvider &&
|
||||
other.itemType == itemType;
|
||||
other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetAllMangaWithoutCategoriesStreamRef
|
||||
on AutoDisposeStreamProviderRef<List<Manga>> {
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType get itemType;
|
||||
}
|
||||
String _$getAllMangaWithoutCategoriesStreamHash() =>
|
||||
r'61ea54070c7e87a45aeabce5fd21366faaf4ae6d';
|
||||
|
||||
class _GetAllMangaWithoutCategoriesStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<List<Manga>>
|
||||
with GetAllMangaWithoutCategoriesStreamRef {
|
||||
_GetAllMangaWithoutCategoriesStreamProviderElement(super.provider);
|
||||
final class GetAllMangaWithoutCategoriesStreamFamily extends $Family
|
||||
with $FunctionalFamilyOverride<Stream<List<Manga>>, ItemType> {
|
||||
const GetAllMangaWithoutCategoriesStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getAllMangaWithoutCategoriesStreamProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetAllMangaWithoutCategoriesStreamProvider call({
|
||||
required ItemType itemType,
|
||||
}) => GetAllMangaWithoutCategoriesStreamProvider._(
|
||||
argument: itemType,
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
ItemType get itemType =>
|
||||
(origin as GetAllMangaWithoutCategoriesStreamProvider).itemType;
|
||||
String toString() => r'getAllMangaWithoutCategoriesStreamProvider';
|
||||
}
|
||||
|
||||
@ProviderFor(getSettingsStream)
|
||||
const getSettingsStreamProvider = GetSettingsStreamProvider._();
|
||||
|
||||
final class GetSettingsStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<Settings>>,
|
||||
List<Settings>,
|
||||
Stream<List<Settings>>
|
||||
>
|
||||
with $FutureModifier<List<Settings>>, $StreamProvider<List<Settings>> {
|
||||
const GetSettingsStreamProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'getSettingsStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getSettingsStreamHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$StreamProviderElement<List<Settings>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Stream<List<Settings>> create(Ref ref) {
|
||||
return getSettingsStream(ref);
|
||||
}
|
||||
}
|
||||
|
||||
String _$getSettingsStreamHash() => r'c5a51e0e3473b25d2365025832a27ed2cc029b27';
|
||||
|
||||
/// See also [getSettingsStream].
|
||||
@ProviderFor(getSettingsStream)
|
||||
final getSettingsStreamProvider =
|
||||
AutoDisposeStreamProvider<List<Settings>>.internal(
|
||||
getSettingsStream,
|
||||
name: r'getSettingsStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getSettingsStreamHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef GetSettingsStreamRef = AutoDisposeStreamProviderRef<List<Settings>>;
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ class MangaFilterDownloadedState extends _$MangaFilterDownloadedState {
|
|||
state = type;
|
||||
}
|
||||
|
||||
update() {
|
||||
void update() {
|
||||
if (state == 0) {
|
||||
setType(1);
|
||||
} else if (state == 1) {
|
||||
|
|
@ -228,7 +228,7 @@ class MangaFilterUnreadState extends _$MangaFilterUnreadState {
|
|||
}
|
||||
}
|
||||
|
||||
update() {
|
||||
List<Manga> update() {
|
||||
if (state == 0) {
|
||||
final data = mangaList.where((element) {
|
||||
List list = [];
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -8,7 +8,6 @@ import 'package:mangayomi/models/manga.dart';
|
|||
import 'package:mangayomi/modules/manga/archive_reader/models/models.dart';
|
||||
import 'package:mangayomi/modules/manga/archive_reader/providers/archive_reader_providers.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'local_archive.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,191 +6,91 @@ part of 'local_archive.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$importArchivesFromFileHash() =>
|
||||
r'784b9d45958695faffdf04ee7c105c9b486122de';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [importArchivesFromFile].
|
||||
@ProviderFor(importArchivesFromFile)
|
||||
const importArchivesFromFileProvider = ImportArchivesFromFileFamily();
|
||||
const importArchivesFromFileProvider = ImportArchivesFromFileFamily._();
|
||||
|
||||
/// See also [importArchivesFromFile].
|
||||
class ImportArchivesFromFileFamily extends Family<AsyncValue> {
|
||||
/// See also [importArchivesFromFile].
|
||||
const ImportArchivesFromFileFamily();
|
||||
|
||||
/// See also [importArchivesFromFile].
|
||||
ImportArchivesFromFileProvider call(
|
||||
Manga? mManga, {
|
||||
required ItemType itemType,
|
||||
required bool init,
|
||||
}) {
|
||||
return ImportArchivesFromFileProvider(
|
||||
mManga,
|
||||
itemType: itemType,
|
||||
init: init,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
ImportArchivesFromFileProvider getProviderOverride(
|
||||
covariant ImportArchivesFromFileProvider provider,
|
||||
) {
|
||||
return call(
|
||||
provider.mManga,
|
||||
itemType: provider.itemType,
|
||||
init: provider.init,
|
||||
);
|
||||
}
|
||||
|
||||
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'importArchivesFromFileProvider';
|
||||
}
|
||||
|
||||
/// See also [importArchivesFromFile].
|
||||
class ImportArchivesFromFileProvider
|
||||
extends AutoDisposeFutureProvider<Object?> {
|
||||
/// See also [importArchivesFromFile].
|
||||
ImportArchivesFromFileProvider(
|
||||
Manga? mManga, {
|
||||
required ItemType itemType,
|
||||
required bool init,
|
||||
}) : this._internal(
|
||||
(ref) => importArchivesFromFile(
|
||||
ref as ImportArchivesFromFileRef,
|
||||
mManga,
|
||||
itemType: itemType,
|
||||
init: init,
|
||||
),
|
||||
from: importArchivesFromFileProvider,
|
||||
final class ImportArchivesFromFileProvider
|
||||
extends $FunctionalProvider<AsyncValue<dynamic>, dynamic, FutureOr<dynamic>>
|
||||
with $FutureModifier<dynamic>, $FutureProvider<dynamic> {
|
||||
const ImportArchivesFromFileProvider._({
|
||||
required ImportArchivesFromFileFamily super.from,
|
||||
required (Manga?, {ItemType itemType, bool init}) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'importArchivesFromFileProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$importArchivesFromFileHash,
|
||||
dependencies: ImportArchivesFromFileFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
ImportArchivesFromFileFamily._allTransitiveDependencies,
|
||||
mManga: mManga,
|
||||
itemType: itemType,
|
||||
init: init,
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
ImportArchivesFromFileProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.mManga,
|
||||
required this.itemType,
|
||||
required this.init,
|
||||
}) : super.internal();
|
||||
|
||||
final Manga? mManga;
|
||||
final ItemType itemType;
|
||||
final bool init;
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$importArchivesFromFileHash();
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<Object?> Function(ImportArchivesFromFileRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: ImportArchivesFromFileProvider._internal(
|
||||
(ref) => create(ref as ImportArchivesFromFileRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
mManga: mManga,
|
||||
itemType: itemType,
|
||||
init: init,
|
||||
),
|
||||
);
|
||||
String toString() {
|
||||
return r'importArchivesFromFileProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<Object?> createElement() {
|
||||
return _ImportArchivesFromFileProviderElement(this);
|
||||
$FutureProviderElement<dynamic> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<dynamic> create(Ref ref) {
|
||||
final argument = this.argument as (Manga?, {ItemType itemType, bool init});
|
||||
return importArchivesFromFile(
|
||||
ref,
|
||||
argument.$1,
|
||||
itemType: argument.itemType,
|
||||
init: argument.init,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is ImportArchivesFromFileProvider &&
|
||||
other.mManga == mManga &&
|
||||
other.itemType == itemType &&
|
||||
other.init == init;
|
||||
other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mManga.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
hash = _SystemHash.combine(hash, init.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ImportArchivesFromFileRef on AutoDisposeFutureProviderRef<Object?> {
|
||||
/// The parameter `mManga` of this provider.
|
||||
Manga? get mManga;
|
||||
String _$importArchivesFromFileHash() =>
|
||||
r'784b9d45958695faffdf04ee7c105c9b486122de';
|
||||
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType get itemType;
|
||||
final class ImportArchivesFromFileFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<dynamic>,
|
||||
(Manga?, {ItemType itemType, bool init})
|
||||
> {
|
||||
const ImportArchivesFromFileFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'importArchivesFromFileProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
/// The parameter `init` of this provider.
|
||||
bool get init;
|
||||
ImportArchivesFromFileProvider call(
|
||||
Manga? mManga, {
|
||||
required ItemType itemType,
|
||||
required bool init,
|
||||
}) => ImportArchivesFromFileProvider._(
|
||||
argument: (mManga, itemType: itemType, init: init),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
String toString() => r'importArchivesFromFileProvider';
|
||||
}
|
||||
|
||||
class _ImportArchivesFromFileProviderElement
|
||||
extends AutoDisposeFutureProviderElement<Object?>
|
||||
with ImportArchivesFromFileRef {
|
||||
_ImportArchivesFromFileProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Manga? get mManga => (origin as ImportArchivesFromFileProvider).mManga;
|
||||
@override
|
||||
ItemType get itemType => (origin as ImportArchivesFromFileProvider).itemType;
|
||||
@override
|
||||
bool get init => (origin as ImportArchivesFromFileProvider).init;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'dart:typed_data';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/download.dart';
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'dart:typed_data';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/download.dart';
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
|
|
@ -121,7 +121,7 @@ class _MainScreenState extends ConsumerState<MainScreen> {
|
|||
ref.read(checkForUpdateProvider(context: context));
|
||||
for (var type in ItemType.values) {
|
||||
ref.read(
|
||||
FetchItemSourcesListProvider(
|
||||
fetchItemSourcesListProvider(
|
||||
id: null,
|
||||
reFresh: false,
|
||||
itemType: type,
|
||||
|
|
|
|||
|
|
@ -1,73 +1,72 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/category.dart';
|
||||
import 'package:mangayomi/models/history.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/models/track.dart';
|
||||
// import 'package:isar_community/isar.dart';
|
||||
// import 'package:mangayomi/main.dart';
|
||||
// import 'package:mangayomi/models/category.dart';
|
||||
// import 'package:mangayomi/models/history.dart';
|
||||
// import 'package:mangayomi/models/manga.dart';
|
||||
// import 'package:mangayomi/models/source.dart';
|
||||
// import 'package:mangayomi/models/track.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'migration.g.dart';
|
||||
|
||||
@riverpod
|
||||
Future<void> migration(Ref ref) async {
|
||||
final mangas = isar.mangas
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
.isMangaIsNotNull()
|
||||
.findAllSync();
|
||||
final categories = isar.categorys
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
.forMangaIsNotNull()
|
||||
.findAllSync();
|
||||
// final mangas = isar.mangas
|
||||
// .filter()
|
||||
// .idIsNotNull()
|
||||
// .isMangaIsNotNull()
|
||||
// .findAllSync();
|
||||
// final categories = isar.categorys
|
||||
// .filter()
|
||||
// .idIsNotNull()
|
||||
// .forMangaIsNotNull()
|
||||
// .findAllSync();
|
||||
|
||||
final histories = isar.historys
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
.chapterIdIsNull()
|
||||
.isMangaIsNotNull()
|
||||
.or()
|
||||
.idIsNotNull()
|
||||
.isMangaIsNotNull()
|
||||
.findAllSync();
|
||||
// final histories = isar.historys
|
||||
// .filter()
|
||||
// .idIsNotNull()
|
||||
// .chapterIdIsNull()
|
||||
// .isMangaIsNotNull()
|
||||
// .or()
|
||||
// .idIsNotNull()
|
||||
// .isMangaIsNotNull()
|
||||
// .findAllSync();
|
||||
|
||||
final sources = isar.sources
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
.isMangaIsNotNull()
|
||||
.findAllSync();
|
||||
final tracks = isar.tracks
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
.isMangaIsNotNull()
|
||||
.findAllSync();
|
||||
// final sources = isar.sources
|
||||
// .filter()
|
||||
// .idIsNotNull()
|
||||
// .isMangaIsNotNull()
|
||||
// .findAllSync();
|
||||
// final tracks = isar.tracks
|
||||
// .filter()
|
||||
// .idIsNotNull()
|
||||
// .isMangaIsNotNull()
|
||||
// .findAllSync();
|
||||
|
||||
isar.writeTxnSync(() {
|
||||
for (var history in histories) {
|
||||
isar.historys.putSync(
|
||||
history..itemType = _convertToItemType(history.isManga!),
|
||||
);
|
||||
}
|
||||
for (var source in sources) {
|
||||
isar.sources.putSync(
|
||||
source..itemType = _convertToItemType(source.isManga!),
|
||||
);
|
||||
}
|
||||
for (var track in tracks) {
|
||||
isar.tracks.putSync(track..itemType = _convertToItemType(track.isManga!));
|
||||
}
|
||||
for (var manga in mangas) {
|
||||
isar.mangas.putSync(manga..itemType = _convertToItemType(manga.isManga!));
|
||||
}
|
||||
for (var category in categories) {
|
||||
isar.categorys.putSync(
|
||||
category..forItemType = _convertToItemType(category.forManga!),
|
||||
);
|
||||
}
|
||||
});
|
||||
// isar.writeTxnSync(() {
|
||||
// for (var history in histories) {
|
||||
// isar.historys.putSync(
|
||||
// history..itemType = _convertToItemType(history.isManga!),
|
||||
// );
|
||||
// }
|
||||
// for (var source in sources) {
|
||||
// isar.sources.putSync(
|
||||
// source..itemType = _convertToItemType(source.isManga!),
|
||||
// );
|
||||
// }
|
||||
// for (var track in tracks) {
|
||||
// isar.tracks.putSync(track..itemType = _convertToItemType(track.isManga!));
|
||||
// }
|
||||
// for (var manga in mangas) {
|
||||
// isar.mangas.putSync(manga..itemType = _convertToItemType(manga.isManga!));
|
||||
// }
|
||||
// for (var category in categories) {
|
||||
// isar.categorys.putSync(
|
||||
// category..forItemType = _convertToItemType(category.forManga!),
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
ItemType _convertToItemType(bool isManga) {
|
||||
return isManga ? ItemType.manga : ItemType.anime;
|
||||
}
|
||||
// ItemType _convertToItemType(bool isManga) {
|
||||
// return isManga ? ItemType.manga : ItemType.anime;
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -6,22 +6,38 @@ part of 'migration.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$migrationHash() => r'2a82120544e693a3162da887a3ca1b3066f3799f';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// See also [migration].
|
||||
@ProviderFor(migration)
|
||||
final migrationProvider = AutoDisposeFutureProvider<void>.internal(
|
||||
migration,
|
||||
name: r'migrationProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$migrationHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
const migrationProvider = MigrationProvider._();
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef MigrationRef = AutoDisposeFutureProviderRef<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
|
||||
final class MigrationProvider
|
||||
extends $FunctionalProvider<AsyncValue<void>, void, FutureOr<void>>
|
||||
with $FutureModifier<void>, $FutureProvider<void> {
|
||||
const MigrationProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'migrationProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$migrationHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<void> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<void> create(Ref ref) {
|
||||
return migration(ref);
|
||||
}
|
||||
}
|
||||
|
||||
String _$migrationHash() => r'2a82120544e693a3162da887a3ca1b3066f3799f';
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ import 'package:archive/archive_io.dart';
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:mangayomi/modules/manga/archive_reader/models/models.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
part 'archive_reader_providers.g.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -6,565 +6,329 @@ part of 'archive_reader_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getArchivesDataFromDirectoryHash() =>
|
||||
r'2a4d1a11e2b028e569ffd8a2700e4a1779bb9264';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [getArchivesDataFromDirectory].
|
||||
@ProviderFor(getArchivesDataFromDirectory)
|
||||
const getArchivesDataFromDirectoryProvider =
|
||||
GetArchivesDataFromDirectoryFamily();
|
||||
GetArchivesDataFromDirectoryFamily._();
|
||||
|
||||
/// See also [getArchivesDataFromDirectory].
|
||||
class GetArchivesDataFromDirectoryFamily
|
||||
final class GetArchivesDataFromDirectoryProvider
|
||||
extends
|
||||
Family<
|
||||
AsyncValue<List<(String, LocalExtensionType, Uint8List, String)>>
|
||||
> {
|
||||
/// See also [getArchivesDataFromDirectory].
|
||||
const GetArchivesDataFromDirectoryFamily();
|
||||
|
||||
/// See also [getArchivesDataFromDirectory].
|
||||
GetArchivesDataFromDirectoryProvider call(String path) {
|
||||
return GetArchivesDataFromDirectoryProvider(path);
|
||||
}
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<(String, LocalExtensionType, Uint8List, String)>>,
|
||||
List<(String, LocalExtensionType, Uint8List, String)>,
|
||||
FutureOr<List<(String, LocalExtensionType, Uint8List, String)>>
|
||||
>
|
||||
with
|
||||
$FutureModifier<List<(String, LocalExtensionType, Uint8List, String)>>,
|
||||
$FutureProvider<List<(String, LocalExtensionType, Uint8List, String)>> {
|
||||
const GetArchivesDataFromDirectoryProvider._({
|
||||
required GetArchivesDataFromDirectoryFamily super.from,
|
||||
required String super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getArchivesDataFromDirectoryProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
GetArchivesDataFromDirectoryProvider getProviderOverride(
|
||||
covariant GetArchivesDataFromDirectoryProvider provider,
|
||||
String debugGetCreateSourceHash() => _$getArchivesDataFromDirectoryHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getArchivesDataFromDirectoryProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<List<(String, LocalExtensionType, Uint8List, String)>>
|
||||
$createElement($ProviderPointer pointer) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<List<(String, LocalExtensionType, Uint8List, String)>> create(
|
||||
Ref ref,
|
||||
) {
|
||||
return call(provider.path);
|
||||
}
|
||||
|
||||
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'getArchivesDataFromDirectoryProvider';
|
||||
}
|
||||
|
||||
/// See also [getArchivesDataFromDirectory].
|
||||
class GetArchivesDataFromDirectoryProvider
|
||||
extends
|
||||
AutoDisposeFutureProvider<
|
||||
List<(String, LocalExtensionType, Uint8List, String)>
|
||||
> {
|
||||
/// See also [getArchivesDataFromDirectory].
|
||||
GetArchivesDataFromDirectoryProvider(String path)
|
||||
: this._internal(
|
||||
(ref) => getArchivesDataFromDirectory(
|
||||
ref as GetArchivesDataFromDirectoryRef,
|
||||
path,
|
||||
),
|
||||
from: getArchivesDataFromDirectoryProvider,
|
||||
name: r'getArchivesDataFromDirectoryProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getArchivesDataFromDirectoryHash,
|
||||
dependencies: GetArchivesDataFromDirectoryFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetArchivesDataFromDirectoryFamily._allTransitiveDependencies,
|
||||
path: path,
|
||||
);
|
||||
|
||||
GetArchivesDataFromDirectoryProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.path,
|
||||
}) : super.internal();
|
||||
|
||||
final String path;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<List<(String, LocalExtensionType, Uint8List, String)>> Function(
|
||||
GetArchivesDataFromDirectoryRef provider,
|
||||
)
|
||||
create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetArchivesDataFromDirectoryProvider._internal(
|
||||
(ref) => create(ref as GetArchivesDataFromDirectoryRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
path: path,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<
|
||||
List<(String, LocalExtensionType, Uint8List, String)>
|
||||
>
|
||||
createElement() {
|
||||
return _GetArchivesDataFromDirectoryProviderElement(this);
|
||||
final argument = this.argument as String;
|
||||
return getArchivesDataFromDirectory(ref, argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetArchivesDataFromDirectoryProvider && other.path == path;
|
||||
return other is GetArchivesDataFromDirectoryProvider &&
|
||||
other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, path.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetArchivesDataFromDirectoryRef
|
||||
on
|
||||
AutoDisposeFutureProviderRef<
|
||||
List<(String, LocalExtensionType, Uint8List, String)>
|
||||
> {
|
||||
/// The parameter `path` of this provider.
|
||||
String get path;
|
||||
}
|
||||
String _$getArchivesDataFromDirectoryHash() =>
|
||||
r'2a4d1a11e2b028e569ffd8a2700e4a1779bb9264';
|
||||
|
||||
class _GetArchivesDataFromDirectoryProviderElement
|
||||
extends
|
||||
AutoDisposeFutureProviderElement<
|
||||
List<(String, LocalExtensionType, Uint8List, String)>
|
||||
>
|
||||
with GetArchivesDataFromDirectoryRef {
|
||||
_GetArchivesDataFromDirectoryProviderElement(super.provider);
|
||||
final class GetArchivesDataFromDirectoryFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<List<(String, LocalExtensionType, Uint8List, String)>>,
|
||||
String
|
||||
> {
|
||||
const GetArchivesDataFromDirectoryFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getArchivesDataFromDirectoryProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetArchivesDataFromDirectoryProvider call(String path) =>
|
||||
GetArchivesDataFromDirectoryProvider._(argument: path, from: this);
|
||||
|
||||
@override
|
||||
String get path => (origin as GetArchivesDataFromDirectoryProvider).path;
|
||||
String toString() => r'getArchivesDataFromDirectoryProvider';
|
||||
}
|
||||
|
||||
@ProviderFor(getArchiveDataFromDirectory)
|
||||
const getArchiveDataFromDirectoryProvider =
|
||||
GetArchiveDataFromDirectoryFamily._();
|
||||
|
||||
final class GetArchiveDataFromDirectoryProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<LocalArchive>>,
|
||||
List<LocalArchive>,
|
||||
FutureOr<List<LocalArchive>>
|
||||
>
|
||||
with
|
||||
$FutureModifier<List<LocalArchive>>,
|
||||
$FutureProvider<List<LocalArchive>> {
|
||||
const GetArchiveDataFromDirectoryProvider._({
|
||||
required GetArchiveDataFromDirectoryFamily super.from,
|
||||
required String super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getArchiveDataFromDirectoryProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getArchiveDataFromDirectoryHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getArchiveDataFromDirectoryProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<List<LocalArchive>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<List<LocalArchive>> create(Ref ref) {
|
||||
final argument = this.argument as String;
|
||||
return getArchiveDataFromDirectory(ref, argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetArchiveDataFromDirectoryProvider &&
|
||||
other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
String _$getArchiveDataFromDirectoryHash() =>
|
||||
r'49aa47895feafd9fa0c4f20e25d7674a3d54b212';
|
||||
|
||||
/// See also [getArchiveDataFromDirectory].
|
||||
@ProviderFor(getArchiveDataFromDirectory)
|
||||
const getArchiveDataFromDirectoryProvider = GetArchiveDataFromDirectoryFamily();
|
||||
|
||||
/// See also [getArchiveDataFromDirectory].
|
||||
class GetArchiveDataFromDirectoryFamily
|
||||
extends Family<AsyncValue<List<LocalArchive>>> {
|
||||
/// See also [getArchiveDataFromDirectory].
|
||||
const GetArchiveDataFromDirectoryFamily();
|
||||
|
||||
/// See also [getArchiveDataFromDirectory].
|
||||
GetArchiveDataFromDirectoryProvider call(String path) {
|
||||
return GetArchiveDataFromDirectoryProvider(path);
|
||||
}
|
||||
|
||||
@override
|
||||
GetArchiveDataFromDirectoryProvider getProviderOverride(
|
||||
covariant GetArchiveDataFromDirectoryProvider provider,
|
||||
) {
|
||||
return call(provider.path);
|
||||
}
|
||||
|
||||
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'getArchiveDataFromDirectoryProvider';
|
||||
}
|
||||
|
||||
/// See also [getArchiveDataFromDirectory].
|
||||
class GetArchiveDataFromDirectoryProvider
|
||||
extends AutoDisposeFutureProvider<List<LocalArchive>> {
|
||||
/// See also [getArchiveDataFromDirectory].
|
||||
GetArchiveDataFromDirectoryProvider(String path)
|
||||
: this._internal(
|
||||
(ref) => getArchiveDataFromDirectory(
|
||||
ref as GetArchiveDataFromDirectoryRef,
|
||||
path,
|
||||
),
|
||||
from: getArchiveDataFromDirectoryProvider,
|
||||
final class GetArchiveDataFromDirectoryFamily extends $Family
|
||||
with $FunctionalFamilyOverride<FutureOr<List<LocalArchive>>, String> {
|
||||
const GetArchiveDataFromDirectoryFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getArchiveDataFromDirectoryProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getArchiveDataFromDirectoryHash,
|
||||
dependencies: GetArchiveDataFromDirectoryFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetArchiveDataFromDirectoryFamily._allTransitiveDependencies,
|
||||
path: path,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetArchiveDataFromDirectoryProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.path,
|
||||
}) : super.internal();
|
||||
|
||||
final String path;
|
||||
GetArchiveDataFromDirectoryProvider call(String path) =>
|
||||
GetArchiveDataFromDirectoryProvider._(argument: path, from: this);
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<List<LocalArchive>> Function(
|
||||
GetArchiveDataFromDirectoryRef provider,
|
||||
)
|
||||
create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetArchiveDataFromDirectoryProvider._internal(
|
||||
(ref) => create(ref as GetArchiveDataFromDirectoryRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
path: path,
|
||||
),
|
||||
);
|
||||
String toString() => r'getArchiveDataFromDirectoryProvider';
|
||||
}
|
||||
|
||||
@ProviderFor(getArchivesDataFromFile)
|
||||
const getArchivesDataFromFileProvider = GetArchivesDataFromFileFamily._();
|
||||
|
||||
final class GetArchivesDataFromFileProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<(String, LocalExtensionType, Uint8List, String)>,
|
||||
(String, LocalExtensionType, Uint8List, String),
|
||||
FutureOr<(String, LocalExtensionType, Uint8List, String)>
|
||||
>
|
||||
with
|
||||
$FutureModifier<(String, LocalExtensionType, Uint8List, String)>,
|
||||
$FutureProvider<(String, LocalExtensionType, Uint8List, String)> {
|
||||
const GetArchivesDataFromFileProvider._({
|
||||
required GetArchivesDataFromFileFamily super.from,
|
||||
required String super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getArchivesDataFromFileProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getArchivesDataFromFileHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getArchivesDataFromFileProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<List<LocalArchive>> createElement() {
|
||||
return _GetArchiveDataFromDirectoryProviderElement(this);
|
||||
$FutureProviderElement<(String, LocalExtensionType, Uint8List, String)>
|
||||
$createElement($ProviderPointer pointer) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<(String, LocalExtensionType, Uint8List, String)> create(Ref ref) {
|
||||
final argument = this.argument as String;
|
||||
return getArchivesDataFromFile(ref, argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetArchiveDataFromDirectoryProvider && other.path == path;
|
||||
return other is GetArchivesDataFromFileProvider &&
|
||||
other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, path.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetArchiveDataFromDirectoryRef
|
||||
on AutoDisposeFutureProviderRef<List<LocalArchive>> {
|
||||
/// The parameter `path` of this provider.
|
||||
String get path;
|
||||
}
|
||||
|
||||
class _GetArchiveDataFromDirectoryProviderElement
|
||||
extends AutoDisposeFutureProviderElement<List<LocalArchive>>
|
||||
with GetArchiveDataFromDirectoryRef {
|
||||
_GetArchiveDataFromDirectoryProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
String get path => (origin as GetArchiveDataFromDirectoryProvider).path;
|
||||
}
|
||||
|
||||
String _$getArchivesDataFromFileHash() =>
|
||||
r'79874b548614b4410c19bca5f74978ec761742c5';
|
||||
|
||||
/// See also [getArchivesDataFromFile].
|
||||
@ProviderFor(getArchivesDataFromFile)
|
||||
const getArchivesDataFromFileProvider = GetArchivesDataFromFileFamily();
|
||||
|
||||
/// See also [getArchivesDataFromFile].
|
||||
class GetArchivesDataFromFileFamily
|
||||
extends
|
||||
Family<AsyncValue<(String, LocalExtensionType, Uint8List, String)>> {
|
||||
/// See also [getArchivesDataFromFile].
|
||||
const GetArchivesDataFromFileFamily();
|
||||
|
||||
/// See also [getArchivesDataFromFile].
|
||||
GetArchivesDataFromFileProvider call(String path) {
|
||||
return GetArchivesDataFromFileProvider(path);
|
||||
}
|
||||
|
||||
@override
|
||||
GetArchivesDataFromFileProvider getProviderOverride(
|
||||
covariant GetArchivesDataFromFileProvider provider,
|
||||
) {
|
||||
return call(provider.path);
|
||||
}
|
||||
|
||||
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'getArchivesDataFromFileProvider';
|
||||
}
|
||||
|
||||
/// See also [getArchivesDataFromFile].
|
||||
class GetArchivesDataFromFileProvider
|
||||
extends
|
||||
AutoDisposeFutureProvider<
|
||||
(String, LocalExtensionType, Uint8List, String)
|
||||
final class GetArchivesDataFromFileFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<(String, LocalExtensionType, Uint8List, String)>,
|
||||
String
|
||||
> {
|
||||
/// See also [getArchivesDataFromFile].
|
||||
GetArchivesDataFromFileProvider(String path)
|
||||
: this._internal(
|
||||
(ref) =>
|
||||
getArchivesDataFromFile(ref as GetArchivesDataFromFileRef, path),
|
||||
from: getArchivesDataFromFileProvider,
|
||||
const GetArchivesDataFromFileFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getArchivesDataFromFileProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getArchivesDataFromFileHash,
|
||||
dependencies: GetArchivesDataFromFileFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetArchivesDataFromFileFamily._allTransitiveDependencies,
|
||||
path: path,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetArchivesDataFromFileProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.path,
|
||||
}) : super.internal();
|
||||
|
||||
final String path;
|
||||
GetArchivesDataFromFileProvider call(String path) =>
|
||||
GetArchivesDataFromFileProvider._(argument: path, from: this);
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<(String, LocalExtensionType, Uint8List, String)> Function(
|
||||
GetArchivesDataFromFileRef provider,
|
||||
)
|
||||
create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetArchivesDataFromFileProvider._internal(
|
||||
(ref) => create(ref as GetArchivesDataFromFileRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
path: path,
|
||||
),
|
||||
);
|
||||
String toString() => r'getArchivesDataFromFileProvider';
|
||||
}
|
||||
|
||||
@ProviderFor(getArchiveDataFromFile)
|
||||
const getArchiveDataFromFileProvider = GetArchiveDataFromFileFamily._();
|
||||
|
||||
final class GetArchiveDataFromFileProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<LocalArchive>,
|
||||
LocalArchive,
|
||||
FutureOr<LocalArchive>
|
||||
>
|
||||
with $FutureModifier<LocalArchive>, $FutureProvider<LocalArchive> {
|
||||
const GetArchiveDataFromFileProvider._({
|
||||
required GetArchiveDataFromFileFamily super.from,
|
||||
required String super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getArchiveDataFromFileProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getArchiveDataFromFileHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getArchiveDataFromFileProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<
|
||||
(String, LocalExtensionType, Uint8List, String)
|
||||
>
|
||||
createElement() {
|
||||
return _GetArchivesDataFromFileProviderElement(this);
|
||||
$FutureProviderElement<LocalArchive> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<LocalArchive> create(Ref ref) {
|
||||
final argument = this.argument as String;
|
||||
return getArchiveDataFromFile(ref, argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetArchivesDataFromFileProvider && other.path == path;
|
||||
return other is GetArchiveDataFromFileProvider &&
|
||||
other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, path.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetArchivesDataFromFileRef
|
||||
on
|
||||
AutoDisposeFutureProviderRef<
|
||||
(String, LocalExtensionType, Uint8List, String)
|
||||
> {
|
||||
/// The parameter `path` of this provider.
|
||||
String get path;
|
||||
}
|
||||
|
||||
class _GetArchivesDataFromFileProviderElement
|
||||
extends
|
||||
AutoDisposeFutureProviderElement<
|
||||
(String, LocalExtensionType, Uint8List, String)
|
||||
>
|
||||
with GetArchivesDataFromFileRef {
|
||||
_GetArchivesDataFromFileProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
String get path => (origin as GetArchivesDataFromFileProvider).path;
|
||||
}
|
||||
|
||||
String _$getArchiveDataFromFileHash() =>
|
||||
r'a5d8bf8246bfa250af6a7fd3c09bba6a012e0b2d';
|
||||
|
||||
/// See also [getArchiveDataFromFile].
|
||||
@ProviderFor(getArchiveDataFromFile)
|
||||
const getArchiveDataFromFileProvider = GetArchiveDataFromFileFamily();
|
||||
|
||||
/// See also [getArchiveDataFromFile].
|
||||
class GetArchiveDataFromFileFamily extends Family<AsyncValue<LocalArchive>> {
|
||||
/// See also [getArchiveDataFromFile].
|
||||
const GetArchiveDataFromFileFamily();
|
||||
|
||||
/// See also [getArchiveDataFromFile].
|
||||
GetArchiveDataFromFileProvider call(String path) {
|
||||
return GetArchiveDataFromFileProvider(path);
|
||||
}
|
||||
|
||||
@override
|
||||
GetArchiveDataFromFileProvider getProviderOverride(
|
||||
covariant GetArchiveDataFromFileProvider provider,
|
||||
) {
|
||||
return call(provider.path);
|
||||
}
|
||||
|
||||
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'getArchiveDataFromFileProvider';
|
||||
}
|
||||
|
||||
/// See also [getArchiveDataFromFile].
|
||||
class GetArchiveDataFromFileProvider
|
||||
extends AutoDisposeFutureProvider<LocalArchive> {
|
||||
/// See also [getArchiveDataFromFile].
|
||||
GetArchiveDataFromFileProvider(String path)
|
||||
: this._internal(
|
||||
(ref) => getArchiveDataFromFile(ref as GetArchiveDataFromFileRef, path),
|
||||
from: getArchiveDataFromFileProvider,
|
||||
final class GetArchiveDataFromFileFamily extends $Family
|
||||
with $FunctionalFamilyOverride<FutureOr<LocalArchive>, String> {
|
||||
const GetArchiveDataFromFileFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getArchiveDataFromFileProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getArchiveDataFromFileHash,
|
||||
dependencies: GetArchiveDataFromFileFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetArchiveDataFromFileFamily._allTransitiveDependencies,
|
||||
path: path,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetArchiveDataFromFileProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.path,
|
||||
}) : super.internal();
|
||||
|
||||
final String path;
|
||||
GetArchiveDataFromFileProvider call(String path) =>
|
||||
GetArchiveDataFromFileProvider._(argument: path, from: this);
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<LocalArchive> Function(GetArchiveDataFromFileRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetArchiveDataFromFileProvider._internal(
|
||||
(ref) => create(ref as GetArchiveDataFromFileRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
path: path,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<LocalArchive> createElement() {
|
||||
return _GetArchiveDataFromFileProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetArchiveDataFromFileProvider && other.path == path;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, path.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
String toString() => r'getArchiveDataFromFileProvider';
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetArchiveDataFromFileRef on AutoDisposeFutureProviderRef<LocalArchive> {
|
||||
/// The parameter `path` of this provider.
|
||||
String get path;
|
||||
}
|
||||
|
||||
class _GetArchiveDataFromFileProviderElement
|
||||
extends AutoDisposeFutureProviderElement<LocalArchive>
|
||||
with GetArchiveDataFromFileRef {
|
||||
_GetArchiveDataFromFileProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
String get path => (origin as GetArchiveDataFromFileProvider).path;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/modules/manga/detail/manga_details_view.dart';
|
||||
|
|
@ -24,7 +24,7 @@ class _MangaReaderDetailState extends ConsumerState<MangaReaderDetail> {
|
|||
_init();
|
||||
}
|
||||
|
||||
_init() async {
|
||||
Future<void> _init() async {
|
||||
await Future.delayed(const Duration(milliseconds: 100));
|
||||
await ref.read(
|
||||
updateMangaDetailProvider(mangaId: widget.mangaId, isInit: true).future,
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/category.dart';
|
||||
|
|
@ -35,6 +35,7 @@ import 'package:mangayomi/providers/l10n_providers.dart';
|
|||
import 'package:mangayomi/providers/storage_provider.dart';
|
||||
import 'package:mangayomi/services/http/m_client.dart';
|
||||
import 'package:mangayomi/utils/extensions/string_extensions.dart';
|
||||
import 'package:mangayomi/utils/riverpod.dart';
|
||||
import 'package:mangayomi/utils/utils.dart';
|
||||
import 'package:mangayomi/utils/cached_network.dart';
|
||||
import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
|
||||
|
|
@ -100,7 +101,7 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
super.dispose();
|
||||
}
|
||||
|
||||
final offetProvider = StateProvider((ref) => 0.0);
|
||||
final offetProvider = StateProvider(() => 0.0);
|
||||
bool _expanded = false;
|
||||
late final ScrollController _scrollController;
|
||||
late final isLocalArchive = widget.manga!.isLocalArchive ?? false;
|
||||
|
|
@ -2139,7 +2140,7 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
),
|
||||
onPressed: () async {
|
||||
final trackSearch =
|
||||
await trackersSearchraggableMenu(
|
||||
await trackersSearchDraggableMenu(
|
||||
context,
|
||||
itemType:
|
||||
widget.manga!.itemType,
|
||||
|
|
@ -2502,7 +2503,7 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
text: l10nLocalizations(context)!.add_tracker,
|
||||
onTap: () async {
|
||||
final trackSearch =
|
||||
await trackersSearchraggableMenu(
|
||||
await trackersSearchDraggableMenu(
|
||||
context,
|
||||
itemType: widget.manga!.itemType,
|
||||
track: Track(
|
||||
|
|
@ -2518,6 +2519,7 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
trackStateProvider(
|
||||
track: null,
|
||||
itemType: widget.manga!.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.setTrackSearch(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/category.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'isar_providers.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,272 +6,150 @@ part of 'isar_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getMangaDetailStreamHash() =>
|
||||
r'6e7c5dc20ee7d32a091e884ac6980e191f698c8c';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [getMangaDetailStream].
|
||||
@ProviderFor(getMangaDetailStream)
|
||||
const getMangaDetailStreamProvider = GetMangaDetailStreamFamily();
|
||||
const getMangaDetailStreamProvider = GetMangaDetailStreamFamily._();
|
||||
|
||||
/// See also [getMangaDetailStream].
|
||||
class GetMangaDetailStreamFamily extends Family<AsyncValue<Manga?>> {
|
||||
/// See also [getMangaDetailStream].
|
||||
const GetMangaDetailStreamFamily();
|
||||
final class GetMangaDetailStreamProvider
|
||||
extends $FunctionalProvider<AsyncValue<Manga?>, Manga?, Stream<Manga?>>
|
||||
with $FutureModifier<Manga?>, $StreamProvider<Manga?> {
|
||||
const GetMangaDetailStreamProvider._({
|
||||
required GetMangaDetailStreamFamily super.from,
|
||||
required int super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getMangaDetailStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [getMangaDetailStream].
|
||||
GetMangaDetailStreamProvider call({required int mangaId}) {
|
||||
return GetMangaDetailStreamProvider(mangaId: mangaId);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getMangaDetailStreamHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getMangaDetailStreamProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
GetMangaDetailStreamProvider getProviderOverride(
|
||||
covariant GetMangaDetailStreamProvider provider,
|
||||
) {
|
||||
return call(mangaId: provider.mangaId);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
$StreamProviderElement<Manga?> $createElement($ProviderPointer pointer) =>
|
||||
$StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getMangaDetailStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getMangaDetailStream].
|
||||
class GetMangaDetailStreamProvider extends AutoDisposeStreamProvider<Manga?> {
|
||||
/// See also [getMangaDetailStream].
|
||||
GetMangaDetailStreamProvider({required int mangaId})
|
||||
: this._internal(
|
||||
(ref) => getMangaDetailStream(
|
||||
ref as GetMangaDetailStreamRef,
|
||||
mangaId: mangaId,
|
||||
),
|
||||
from: getMangaDetailStreamProvider,
|
||||
name: r'getMangaDetailStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getMangaDetailStreamHash,
|
||||
dependencies: GetMangaDetailStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetMangaDetailStreamFamily._allTransitiveDependencies,
|
||||
mangaId: mangaId,
|
||||
);
|
||||
|
||||
GetMangaDetailStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.mangaId,
|
||||
}) : super.internal();
|
||||
|
||||
final int mangaId;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<Manga?> Function(GetMangaDetailStreamRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetMangaDetailStreamProvider._internal(
|
||||
(ref) => create(ref as GetMangaDetailStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
mangaId: mangaId,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<Manga?> createElement() {
|
||||
return _GetMangaDetailStreamProviderElement(this);
|
||||
Stream<Manga?> create(Ref ref) {
|
||||
final argument = this.argument as int;
|
||||
return getMangaDetailStream(ref, mangaId: argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetMangaDetailStreamProvider && other.mangaId == mangaId;
|
||||
return other is GetMangaDetailStreamProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaId.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetMangaDetailStreamRef on AutoDisposeStreamProviderRef<Manga?> {
|
||||
/// The parameter `mangaId` of this provider.
|
||||
int get mangaId;
|
||||
}
|
||||
String _$getMangaDetailStreamHash() =>
|
||||
r'6e7c5dc20ee7d32a091e884ac6980e191f698c8c';
|
||||
|
||||
class _GetMangaDetailStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<Manga?>
|
||||
with GetMangaDetailStreamRef {
|
||||
_GetMangaDetailStreamProviderElement(super.provider);
|
||||
final class GetMangaDetailStreamFamily extends $Family
|
||||
with $FunctionalFamilyOverride<Stream<Manga?>, int> {
|
||||
const GetMangaDetailStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getMangaDetailStreamProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetMangaDetailStreamProvider call({required int mangaId}) =>
|
||||
GetMangaDetailStreamProvider._(argument: mangaId, from: this);
|
||||
|
||||
@override
|
||||
int get mangaId => (origin as GetMangaDetailStreamProvider).mangaId;
|
||||
String toString() => r'getMangaDetailStreamProvider';
|
||||
}
|
||||
|
||||
@ProviderFor(getChaptersStream)
|
||||
const getChaptersStreamProvider = GetChaptersStreamFamily._();
|
||||
|
||||
final class GetChaptersStreamProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<Chapter>>,
|
||||
List<Chapter>,
|
||||
Stream<List<Chapter>>
|
||||
>
|
||||
with $FutureModifier<List<Chapter>>, $StreamProvider<List<Chapter>> {
|
||||
const GetChaptersStreamProvider._({
|
||||
required GetChaptersStreamFamily super.from,
|
||||
required int super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'getChaptersStreamProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$getChaptersStreamHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'getChaptersStreamProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$StreamProviderElement<List<Chapter>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $StreamProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Stream<List<Chapter>> create(Ref ref) {
|
||||
final argument = this.argument as int;
|
||||
return getChaptersStream(ref, mangaId: argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetChaptersStreamProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
String _$getChaptersStreamHash() => r'0f03db54c5a639c4356a81e4bad50fa8a077ceac';
|
||||
|
||||
/// See also [getChaptersStream].
|
||||
@ProviderFor(getChaptersStream)
|
||||
const getChaptersStreamProvider = GetChaptersStreamFamily();
|
||||
|
||||
/// See also [getChaptersStream].
|
||||
class GetChaptersStreamFamily extends Family<AsyncValue<List<Chapter>>> {
|
||||
/// See also [getChaptersStream].
|
||||
const GetChaptersStreamFamily();
|
||||
|
||||
/// See also [getChaptersStream].
|
||||
GetChaptersStreamProvider call({required int mangaId}) {
|
||||
return GetChaptersStreamProvider(mangaId: mangaId);
|
||||
}
|
||||
|
||||
@override
|
||||
GetChaptersStreamProvider getProviderOverride(
|
||||
covariant GetChaptersStreamProvider provider,
|
||||
) {
|
||||
return call(mangaId: provider.mangaId);
|
||||
}
|
||||
|
||||
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'getChaptersStreamProvider';
|
||||
}
|
||||
|
||||
/// See also [getChaptersStream].
|
||||
class GetChaptersStreamProvider
|
||||
extends AutoDisposeStreamProvider<List<Chapter>> {
|
||||
/// See also [getChaptersStream].
|
||||
GetChaptersStreamProvider({required int mangaId})
|
||||
: this._internal(
|
||||
(ref) =>
|
||||
getChaptersStream(ref as GetChaptersStreamRef, mangaId: mangaId),
|
||||
from: getChaptersStreamProvider,
|
||||
final class GetChaptersStreamFamily extends $Family
|
||||
with $FunctionalFamilyOverride<Stream<List<Chapter>>, int> {
|
||||
const GetChaptersStreamFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'getChaptersStreamProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getChaptersStreamHash,
|
||||
dependencies: GetChaptersStreamFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetChaptersStreamFamily._allTransitiveDependencies,
|
||||
mangaId: mangaId,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
GetChaptersStreamProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.mangaId,
|
||||
}) : super.internal();
|
||||
|
||||
final int mangaId;
|
||||
GetChaptersStreamProvider call({required int mangaId}) =>
|
||||
GetChaptersStreamProvider._(argument: mangaId, from: this);
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
Stream<List<Chapter>> Function(GetChaptersStreamRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetChaptersStreamProvider._internal(
|
||||
(ref) => create(ref as GetChaptersStreamRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
mangaId: mangaId,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeStreamProviderElement<List<Chapter>> createElement() {
|
||||
return _GetChaptersStreamProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetChaptersStreamProvider && other.mangaId == mangaId;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaId.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
String toString() => r'getChaptersStreamProvider';
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin GetChaptersStreamRef on AutoDisposeStreamProviderRef<List<Chapter>> {
|
||||
/// The parameter `mangaId` of this provider.
|
||||
int get mangaId;
|
||||
}
|
||||
|
||||
class _GetChaptersStreamProviderElement
|
||||
extends AutoDisposeStreamProviderElement<List<Chapter>>
|
||||
with GetChaptersStreamRef {
|
||||
_GetChaptersStreamProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
int get mangaId => (origin as GetChaptersStreamProvider).mangaId;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/download.dart';
|
||||
|
|
@ -307,7 +307,7 @@ class ChapterSetIsBookmarkState extends _$ChapterSetIsBookmarkState {
|
|||
@override
|
||||
void build({required Manga manga}) {}
|
||||
|
||||
set() {
|
||||
void set() {
|
||||
final allChapters = <Chapter>[];
|
||||
final chapters = ref.watch(chaptersListStateProvider);
|
||||
for (var chapter in chapters) {
|
||||
|
|
@ -327,7 +327,7 @@ class ChapterSetIsReadState extends _$ChapterSetIsReadState {
|
|||
@override
|
||||
void build({required Manga manga}) {}
|
||||
|
||||
set() {
|
||||
void set() {
|
||||
final allChapters = <Chapter>[];
|
||||
final chapters = ref.watch(chaptersListStateProvider);
|
||||
for (var chapter in chapters) {
|
||||
|
|
@ -347,7 +347,7 @@ class ChapterSetDownloadState extends _$ChapterSetDownloadState {
|
|||
@override
|
||||
void build({required Manga manga}) {}
|
||||
|
||||
set() {
|
||||
void set() {
|
||||
ref.read(isLongPressedStateProvider.notifier).update(false);
|
||||
isar.txnSync(() {
|
||||
for (var chapter in ref.watch(chaptersListStateProvider)) {
|
||||
|
|
@ -372,7 +372,7 @@ class ChaptersListttState extends _$ChaptersListttState {
|
|||
return [];
|
||||
}
|
||||
|
||||
set(List<Chapter> chapters) async {
|
||||
void set(List<Chapter> chapters) async {
|
||||
await Future.delayed(const Duration(milliseconds: 10));
|
||||
state = chapters;
|
||||
}
|
||||
|
|
@ -431,7 +431,7 @@ class ScanlatorsFilterState extends _$ScanlatorsFilterState {
|
|||
return filter.isEmpty ? null : filter.first.scanlators;
|
||||
}
|
||||
|
||||
setFilteredList(String scanlator) {
|
||||
void setFilteredList(String scanlator) {
|
||||
List<String> scanlatorFilteredList = [];
|
||||
for (var a in state.$3) {
|
||||
scanlatorFilteredList.add(a);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
|
|
@ -17,29 +18,57 @@ part 'track_state_providers.g.dart';
|
|||
@riverpod
|
||||
class TrackState extends _$TrackState {
|
||||
@override
|
||||
Track build({Track? track, required ItemType? itemType}) {
|
||||
Track build({
|
||||
Track? track,
|
||||
required ItemType? itemType,
|
||||
required WidgetRef widgetRef,
|
||||
}) {
|
||||
return track!;
|
||||
}
|
||||
|
||||
BaseTracker getNotifier(int syncId) {
|
||||
return switch (syncId) {
|
||||
1 => ref.read(
|
||||
myAnimeListProvider(syncId: syncId, itemType: itemType).notifier,
|
||||
1 => widgetRef.read(
|
||||
myAnimeListProvider(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
widgetRef: widgetRef,
|
||||
).notifier,
|
||||
),
|
||||
2 => ref.read(
|
||||
anilistProvider(syncId: syncId, itemType: itemType).notifier,
|
||||
2 => widgetRef.read(
|
||||
anilistProvider(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
widgetRef: widgetRef,
|
||||
).notifier,
|
||||
),
|
||||
3 => ref.read(kitsuProvider(syncId: syncId, itemType: itemType).notifier),
|
||||
4 => ref.read(simklProvider(syncId: syncId, itemType: itemType).notifier),
|
||||
5 => ref.read(
|
||||
traktTvProvider(syncId: syncId, itemType: itemType).notifier,
|
||||
3 => widgetRef.read(
|
||||
kitsuProvider(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
widgetRef: widgetRef,
|
||||
).notifier,
|
||||
),
|
||||
4 => widgetRef.read(
|
||||
simklProvider(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
widgetRef: widgetRef,
|
||||
).notifier,
|
||||
),
|
||||
5 => widgetRef.read(
|
||||
traktTvProvider(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
widgetRef: widgetRef,
|
||||
).notifier,
|
||||
),
|
||||
_ => throw Exception('Unsupported syncId: $syncId'),
|
||||
};
|
||||
}
|
||||
|
||||
void writeBack(Track t) {
|
||||
ref
|
||||
widgetRef
|
||||
.read(tracksProvider(syncId: t.syncId!).notifier)
|
||||
.updateTrackManga(t, itemType!);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,192 +6,176 @@ part of 'track_state_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$trackStateHash() => r'19fcc38b559996509aa71645de9531bc4b2d4205';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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));
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _$TrackState extends BuildlessAutoDisposeNotifier<Track> {
|
||||
late final Track? track;
|
||||
late final ItemType? itemType;
|
||||
|
||||
Track build({Track? track, required ItemType? itemType});
|
||||
}
|
||||
|
||||
/// See also [TrackState].
|
||||
@ProviderFor(TrackState)
|
||||
const trackStateProvider = TrackStateFamily();
|
||||
const trackStateProvider = TrackStateFamily._();
|
||||
|
||||
/// See also [TrackState].
|
||||
class TrackStateFamily extends Family<Track> {
|
||||
/// See also [TrackState].
|
||||
const TrackStateFamily();
|
||||
final class TrackStateProvider extends $NotifierProvider<TrackState, Track> {
|
||||
const TrackStateProvider._({
|
||||
required TrackStateFamily super.from,
|
||||
required ({Track? track, ItemType? itemType, WidgetRef widgetRef})
|
||||
super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'trackStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [TrackState].
|
||||
TrackStateProvider call({Track? track, required ItemType? itemType}) {
|
||||
return TrackStateProvider(track: track, itemType: itemType);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$trackStateHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'trackStateProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
TrackStateProvider getProviderOverride(
|
||||
covariant TrackStateProvider provider,
|
||||
) {
|
||||
return call(track: provider.track, itemType: provider.itemType);
|
||||
}
|
||||
TrackState create() => TrackState();
|
||||
|
||||
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'trackStateProvider';
|
||||
}
|
||||
|
||||
/// See also [TrackState].
|
||||
class TrackStateProvider
|
||||
extends AutoDisposeNotifierProviderImpl<TrackState, Track> {
|
||||
/// See also [TrackState].
|
||||
TrackStateProvider({Track? track, required ItemType? itemType})
|
||||
: this._internal(
|
||||
() => TrackState()
|
||||
..track = track
|
||||
..itemType = itemType,
|
||||
from: trackStateProvider,
|
||||
name: r'trackStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$trackStateHash,
|
||||
dependencies: TrackStateFamily._dependencies,
|
||||
allTransitiveDependencies: TrackStateFamily._allTransitiveDependencies,
|
||||
track: track,
|
||||
itemType: itemType,
|
||||
);
|
||||
|
||||
TrackStateProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.track,
|
||||
required this.itemType,
|
||||
}) : super.internal();
|
||||
|
||||
final Track? track;
|
||||
final ItemType? itemType;
|
||||
|
||||
@override
|
||||
Track runNotifierBuild(covariant TrackState notifier) {
|
||||
return notifier.build(track: track, itemType: itemType);
|
||||
}
|
||||
|
||||
@override
|
||||
Override overrideWith(TrackState Function() create) {
|
||||
return ProviderOverride(
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(Track value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
override: TrackStateProvider._internal(
|
||||
() => create()
|
||||
..track = track
|
||||
..itemType = itemType,
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
track: track,
|
||||
itemType: itemType,
|
||||
),
|
||||
providerOverride: $SyncValueProvider<Track>(value),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeNotifierProviderElement<TrackState, Track> createElement() {
|
||||
return _TrackStateProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is TrackStateProvider &&
|
||||
other.track == track &&
|
||||
other.itemType == itemType;
|
||||
return other is TrackStateProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, track.hashCode);
|
||||
hash = _SystemHash.combine(hash, itemType.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin TrackStateRef on AutoDisposeNotifierProviderRef<Track> {
|
||||
/// The parameter `track` of this provider.
|
||||
Track? get track;
|
||||
String _$trackStateHash() => r'cd19c5662338c7f0e508cf2f99e89c21f146d664';
|
||||
|
||||
/// The parameter `itemType` of this provider.
|
||||
ItemType? get itemType;
|
||||
final class TrackStateFamily extends $Family
|
||||
with
|
||||
$ClassFamilyOverride<
|
||||
TrackState,
|
||||
Track,
|
||||
Track,
|
||||
Track,
|
||||
({Track? track, ItemType? itemType, WidgetRef widgetRef})
|
||||
> {
|
||||
const TrackStateFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'trackStateProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
TrackStateProvider call({
|
||||
Track? track,
|
||||
required ItemType? itemType,
|
||||
required WidgetRef widgetRef,
|
||||
}) => TrackStateProvider._(
|
||||
argument: (track: track, itemType: itemType, widgetRef: widgetRef),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
String toString() => r'trackStateProvider';
|
||||
}
|
||||
|
||||
class _TrackStateProviderElement
|
||||
extends AutoDisposeNotifierProviderElement<TrackState, Track>
|
||||
with TrackStateRef {
|
||||
_TrackStateProviderElement(super.provider);
|
||||
abstract class _$TrackState extends $Notifier<Track> {
|
||||
late final _$args =
|
||||
ref.$arg as ({Track? track, ItemType? itemType, WidgetRef widgetRef});
|
||||
Track? get track => _$args.track;
|
||||
ItemType? get itemType => _$args.itemType;
|
||||
WidgetRef get widgetRef => _$args.widgetRef;
|
||||
|
||||
Track build({
|
||||
Track? track,
|
||||
required ItemType? itemType,
|
||||
required WidgetRef widgetRef,
|
||||
});
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build(
|
||||
track: _$args.track,
|
||||
itemType: _$args.itemType,
|
||||
widgetRef: _$args.widgetRef,
|
||||
);
|
||||
final ref = this.ref as $Ref<Track, Track>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<Track, Track>,
|
||||
Track,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
@ProviderFor(LastTrackerLibraryLocationState)
|
||||
const lastTrackerLibraryLocationStateProvider =
|
||||
LastTrackerLibraryLocationStateProvider._();
|
||||
|
||||
final class LastTrackerLibraryLocationStateProvider
|
||||
extends $NotifierProvider<LastTrackerLibraryLocationState, (int, bool)> {
|
||||
const LastTrackerLibraryLocationStateProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'lastTrackerLibraryLocationStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
Track? get track => (origin as TrackStateProvider).track;
|
||||
String debugGetCreateSourceHash() => _$lastTrackerLibraryLocationStateHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
ItemType? get itemType => (origin as TrackStateProvider).itemType;
|
||||
LastTrackerLibraryLocationState create() => LastTrackerLibraryLocationState();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue((int, bool) value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<(int, bool)>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$lastTrackerLibraryLocationStateHash() =>
|
||||
r'c09efe7fe4f8dda723c31bc6543dbaa571718342';
|
||||
|
||||
/// See also [LastTrackerLibraryLocationState].
|
||||
@ProviderFor(LastTrackerLibraryLocationState)
|
||||
final lastTrackerLibraryLocationStateProvider =
|
||||
AutoDisposeNotifierProvider<
|
||||
LastTrackerLibraryLocationState,
|
||||
(int, bool)
|
||||
>.internal(
|
||||
LastTrackerLibraryLocationState.new,
|
||||
name: r'lastTrackerLibraryLocationStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$lastTrackerLibraryLocationStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$LastTrackerLibraryLocationState = AutoDisposeNotifier<(int, bool)>;
|
||||
// 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 _$LastTrackerLibraryLocationState
|
||||
extends $Notifier<(int, bool)> {
|
||||
(int, bool) build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<(int, bool), (int, bool)>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<(int, bool), (int, bool)>,
|
||||
(int, bool),
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import 'package:mangayomi/utils/extensions/others.dart';
|
|||
import 'package:mangayomi/utils/extensions/string_extensions.dart';
|
||||
import 'package:mangayomi/utils/utils.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'update_manga_detail_providers.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,189 +6,90 @@ part of 'update_manga_detail_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$updateMangaDetailHash() => r'3b15af65efba4f27e0fe990c903e66973ac31af3';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [updateMangaDetail].
|
||||
@ProviderFor(updateMangaDetail)
|
||||
const updateMangaDetailProvider = UpdateMangaDetailFamily();
|
||||
const updateMangaDetailProvider = UpdateMangaDetailFamily._();
|
||||
|
||||
/// See also [updateMangaDetail].
|
||||
class UpdateMangaDetailFamily extends Family<AsyncValue<dynamic>> {
|
||||
/// See also [updateMangaDetail].
|
||||
const UpdateMangaDetailFamily();
|
||||
|
||||
/// See also [updateMangaDetail].
|
||||
UpdateMangaDetailProvider call({
|
||||
required int? mangaId,
|
||||
required bool isInit,
|
||||
bool showToast = true,
|
||||
}) {
|
||||
return UpdateMangaDetailProvider(
|
||||
mangaId: mangaId,
|
||||
isInit: isInit,
|
||||
showToast: showToast,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
UpdateMangaDetailProvider getProviderOverride(
|
||||
covariant UpdateMangaDetailProvider provider,
|
||||
) {
|
||||
return call(
|
||||
mangaId: provider.mangaId,
|
||||
isInit: provider.isInit,
|
||||
showToast: provider.showToast,
|
||||
);
|
||||
}
|
||||
|
||||
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'updateMangaDetailProvider';
|
||||
}
|
||||
|
||||
/// See also [updateMangaDetail].
|
||||
class UpdateMangaDetailProvider extends AutoDisposeFutureProvider<dynamic> {
|
||||
/// See also [updateMangaDetail].
|
||||
UpdateMangaDetailProvider({
|
||||
required int? mangaId,
|
||||
required bool isInit,
|
||||
bool showToast = true,
|
||||
}) : this._internal(
|
||||
(ref) => updateMangaDetail(
|
||||
ref as UpdateMangaDetailRef,
|
||||
mangaId: mangaId,
|
||||
isInit: isInit,
|
||||
showToast: showToast,
|
||||
),
|
||||
from: updateMangaDetailProvider,
|
||||
final class UpdateMangaDetailProvider
|
||||
extends $FunctionalProvider<AsyncValue<dynamic>, dynamic, FutureOr<dynamic>>
|
||||
with $FutureModifier<dynamic>, $FutureProvider<dynamic> {
|
||||
const UpdateMangaDetailProvider._({
|
||||
required UpdateMangaDetailFamily super.from,
|
||||
required ({int? mangaId, bool isInit, bool showToast}) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'updateMangaDetailProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$updateMangaDetailHash,
|
||||
dependencies: UpdateMangaDetailFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
UpdateMangaDetailFamily._allTransitiveDependencies,
|
||||
mangaId: mangaId,
|
||||
isInit: isInit,
|
||||
showToast: showToast,
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
UpdateMangaDetailProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.mangaId,
|
||||
required this.isInit,
|
||||
required this.showToast,
|
||||
}) : super.internal();
|
||||
|
||||
final int? mangaId;
|
||||
final bool isInit;
|
||||
final bool showToast;
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$updateMangaDetailHash();
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<dynamic> Function(UpdateMangaDetailRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: UpdateMangaDetailProvider._internal(
|
||||
(ref) => create(ref as UpdateMangaDetailRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
mangaId: mangaId,
|
||||
isInit: isInit,
|
||||
showToast: showToast,
|
||||
),
|
||||
);
|
||||
String toString() {
|
||||
return r'updateMangaDetailProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<dynamic> createElement() {
|
||||
return _UpdateMangaDetailProviderElement(this);
|
||||
$FutureProviderElement<dynamic> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<dynamic> create(Ref ref) {
|
||||
final argument =
|
||||
this.argument as ({int? mangaId, bool isInit, bool showToast});
|
||||
return updateMangaDetail(
|
||||
ref,
|
||||
mangaId: argument.mangaId,
|
||||
isInit: argument.isInit,
|
||||
showToast: argument.showToast,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is UpdateMangaDetailProvider &&
|
||||
other.mangaId == mangaId &&
|
||||
other.isInit == isInit &&
|
||||
other.showToast == showToast;
|
||||
return other is UpdateMangaDetailProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaId.hashCode);
|
||||
hash = _SystemHash.combine(hash, isInit.hashCode);
|
||||
hash = _SystemHash.combine(hash, showToast.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin UpdateMangaDetailRef on AutoDisposeFutureProviderRef<dynamic> {
|
||||
/// The parameter `mangaId` of this provider.
|
||||
int? get mangaId;
|
||||
String _$updateMangaDetailHash() => r'ac2b3fcd446d50a81ad647015e3010c2309f3385';
|
||||
|
||||
/// The parameter `isInit` of this provider.
|
||||
bool get isInit;
|
||||
final class UpdateMangaDetailFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<dynamic>,
|
||||
({int? mangaId, bool isInit, bool showToast})
|
||||
> {
|
||||
const UpdateMangaDetailFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'updateMangaDetailProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
/// The parameter `showToast` of this provider.
|
||||
bool get showToast;
|
||||
UpdateMangaDetailProvider call({
|
||||
required int? mangaId,
|
||||
required bool isInit,
|
||||
bool showToast = true,
|
||||
}) => UpdateMangaDetailProvider._(
|
||||
argument: (mangaId: mangaId, isInit: isInit, showToast: showToast),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
String toString() => r'updateMangaDetailProvider';
|
||||
}
|
||||
|
||||
class _UpdateMangaDetailProviderElement
|
||||
extends AutoDisposeFutureProviderElement<dynamic>
|
||||
with UpdateMangaDetailRef {
|
||||
_UpdateMangaDetailProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
int? get mangaId => (origin as UpdateMangaDetailProvider).mangaId;
|
||||
@override
|
||||
bool get isInit => (origin as UpdateMangaDetailProvider).isInit;
|
||||
@override
|
||||
bool get showToast => (origin as UpdateMangaDetailProvider).showToast;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import 'dart:typed_data';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_manga.dart';
|
||||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
|
|
@ -170,7 +170,7 @@ class _MigrationSourceSearchScreenState
|
|||
String _errorMessage = "";
|
||||
bool _isLoading = true;
|
||||
MPages? pages;
|
||||
_init() async {
|
||||
Future<void> _init() async {
|
||||
try {
|
||||
_errorMessage = "";
|
||||
pages = await ref.read(
|
||||
|
|
@ -599,6 +599,7 @@ class _MigrationMangaGlobalImageCardState
|
|||
trackStateProvider(
|
||||
track: null,
|
||||
itemType: widget.oldManga.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.setTrackSearch(
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class _TrackerWidgetSearchState extends ConsumerState<TrackerWidgetSearch> {
|
|||
bool hide = false;
|
||||
late List<TrackSearch>? tracks = [];
|
||||
String? _errorMsg;
|
||||
_init() async {
|
||||
Future<void> _init() async {
|
||||
await Future.delayed(const Duration(microseconds: 100));
|
||||
try {
|
||||
tracks = await ref
|
||||
|
|
@ -45,6 +45,7 @@ class _TrackerWidgetSearchState extends ConsumerState<TrackerWidgetSearch> {
|
|||
trackStateProvider(
|
||||
track: widget.track,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.search(query);
|
||||
|
|
@ -233,6 +234,7 @@ class _TrackerWidgetSearchState extends ConsumerState<TrackerWidgetSearch> {
|
|||
trackStateProvider(
|
||||
track: widget.track,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.search(d.trim());
|
||||
|
|
@ -280,7 +282,7 @@ class _TrackerWidgetSearchState extends ConsumerState<TrackerWidgetSearch> {
|
|||
}
|
||||
}
|
||||
|
||||
trackersSearchraggableMenu(
|
||||
Future<dynamic> trackersSearchDraggableMenu(
|
||||
BuildContext context, {
|
||||
required Track track,
|
||||
required ItemType itemType,
|
||||
|
|
|
|||
|
|
@ -39,13 +39,14 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
_init();
|
||||
}
|
||||
|
||||
_init() async {
|
||||
Future<void> _init() async {
|
||||
await Future.delayed(const Duration(microseconds: 100));
|
||||
final findManga = await ref
|
||||
.read(
|
||||
trackStateProvider(
|
||||
track: widget.trackRes,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.findManga();
|
||||
|
|
@ -100,7 +101,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
onPressed: !widget.hide
|
||||
? () async {
|
||||
final trackSearch =
|
||||
await trackersSearchraggableMenu(
|
||||
await trackersSearchDraggableMenu(
|
||||
context,
|
||||
itemType: widget.itemType,
|
||||
track: widget.trackRes,
|
||||
|
|
@ -112,6 +113,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
trackStateProvider(
|
||||
track: null,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.setTrackSearch(
|
||||
|
|
@ -186,6 +188,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
trackStateProvider(
|
||||
track: widget.trackRes,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.getStatusList()
|
||||
|
|
@ -196,6 +199,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
trackStateProvider(
|
||||
track: widget.trackRes,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.getStatusList()[index];
|
||||
|
|
@ -211,6 +215,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
track: widget.trackRes
|
||||
..status = status,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.updateManga();
|
||||
|
|
@ -315,6 +320,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
..lastChapterRead =
|
||||
currentIntValue,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.updateManga();
|
||||
|
|
@ -363,6 +369,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
trackStateProvider(
|
||||
track: widget.trackRes,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.getScoreMaxValue(),
|
||||
|
|
@ -372,6 +379,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
trackStateProvider(
|
||||
track: widget.trackRes,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.getTextMapper(numberText);
|
||||
|
|
@ -381,6 +389,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
trackStateProvider(
|
||||
track: widget.trackRes,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.getScoreStep(),
|
||||
|
|
@ -415,6 +424,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
track: widget.trackRes
|
||||
..score = currentIntValue,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.updateManga();
|
||||
|
|
@ -440,6 +450,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
trackStateProvider(
|
||||
track: widget.trackRes,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.displayScore(widget.trackRes.score!)
|
||||
|
|
@ -473,6 +484,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
..startedReadingDate =
|
||||
newDate.millisecondsSinceEpoch,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.updateManga();
|
||||
|
|
@ -513,6 +525,7 @@ class _TrackerWidgetState extends ConsumerState<TrackerWidget> {
|
|||
..finishedReadingDate =
|
||||
newDate.millisecondsSinceEpoch,
|
||||
itemType: widget.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.updateManga();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/track.dart';
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import 'dart:io';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/download.dart';
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import 'dart:io';
|
|||
import 'package:archive/archive_io.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
part 'convert_to_cbz.g.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -6,200 +6,97 @@ part of 'convert_to_cbz.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$convertToCBZHash() => r'56f4320034ec2420c8c2c2b22a2522721181ab54';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
_SystemHash._();
|
||||
@ProviderFor(convertToCBZ)
|
||||
const convertToCBZProvider = ConvertToCBZFamily._();
|
||||
|
||||
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);
|
||||
final class ConvertToCBZProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<List<String>>,
|
||||
List<String>,
|
||||
FutureOr<List<String>>
|
||||
>
|
||||
with $FutureModifier<List<String>>, $FutureProvider<List<String>> {
|
||||
const ConvertToCBZProvider._({
|
||||
required ConvertToCBZFamily super.from,
|
||||
required (String, String, String, List<String>) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'convertToCBZProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$convertToCBZHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'convertToCBZProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
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));
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<List<String>> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<List<String>> create(Ref ref) {
|
||||
final argument = this.argument as (String, String, String, List<String>);
|
||||
return convertToCBZ(
|
||||
ref,
|
||||
argument.$1,
|
||||
argument.$2,
|
||||
argument.$3,
|
||||
argument.$4,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is ConvertToCBZProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
/// See also [convertToCBZ].
|
||||
@ProviderFor(convertToCBZ)
|
||||
const convertToCBZProvider = ConvertToCBZFamily();
|
||||
String _$convertToCBZHash() => r'56f4320034ec2420c8c2c2b22a2522721181ab54';
|
||||
|
||||
/// See also [convertToCBZ].
|
||||
class ConvertToCBZFamily extends Family<AsyncValue<List<String>>> {
|
||||
/// See also [convertToCBZ].
|
||||
const ConvertToCBZFamily();
|
||||
final class ConvertToCBZFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<List<String>>,
|
||||
(String, String, String, List<String>)
|
||||
> {
|
||||
const ConvertToCBZFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'convertToCBZProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
/// See also [convertToCBZ].
|
||||
ConvertToCBZProvider call(
|
||||
String chapterDir,
|
||||
String mangaDir,
|
||||
String chapterName,
|
||||
List<String> pageList,
|
||||
) {
|
||||
return ConvertToCBZProvider(chapterDir, mangaDir, chapterName, pageList);
|
||||
}
|
||||
) => ConvertToCBZProvider._(
|
||||
argument: (chapterDir, mangaDir, chapterName, pageList),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
ConvertToCBZProvider getProviderOverride(
|
||||
covariant ConvertToCBZProvider provider,
|
||||
) {
|
||||
return call(
|
||||
provider.chapterDir,
|
||||
provider.mangaDir,
|
||||
provider.chapterName,
|
||||
provider.pageList,
|
||||
);
|
||||
}
|
||||
|
||||
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'convertToCBZProvider';
|
||||
String toString() => r'convertToCBZProvider';
|
||||
}
|
||||
|
||||
/// See also [convertToCBZ].
|
||||
class ConvertToCBZProvider extends AutoDisposeFutureProvider<List<String>> {
|
||||
/// See also [convertToCBZ].
|
||||
ConvertToCBZProvider(
|
||||
String chapterDir,
|
||||
String mangaDir,
|
||||
String chapterName,
|
||||
List<String> pageList,
|
||||
) : this._internal(
|
||||
(ref) => convertToCBZ(
|
||||
ref as ConvertToCBZRef,
|
||||
chapterDir,
|
||||
mangaDir,
|
||||
chapterName,
|
||||
pageList,
|
||||
),
|
||||
from: convertToCBZProvider,
|
||||
name: r'convertToCBZProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$convertToCBZHash,
|
||||
dependencies: ConvertToCBZFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
ConvertToCBZFamily._allTransitiveDependencies,
|
||||
chapterDir: chapterDir,
|
||||
mangaDir: mangaDir,
|
||||
chapterName: chapterName,
|
||||
pageList: pageList,
|
||||
);
|
||||
|
||||
ConvertToCBZProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.chapterDir,
|
||||
required this.mangaDir,
|
||||
required this.chapterName,
|
||||
required this.pageList,
|
||||
}) : super.internal();
|
||||
|
||||
final String chapterDir;
|
||||
final String mangaDir;
|
||||
final String chapterName;
|
||||
final List<String> pageList;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<List<String>> Function(ConvertToCBZRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: ConvertToCBZProvider._internal(
|
||||
(ref) => create(ref as ConvertToCBZRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
chapterDir: chapterDir,
|
||||
mangaDir: mangaDir,
|
||||
chapterName: chapterName,
|
||||
pageList: pageList,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<List<String>> createElement() {
|
||||
return _ConvertToCBZProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is ConvertToCBZProvider &&
|
||||
other.chapterDir == chapterDir &&
|
||||
other.mangaDir == mangaDir &&
|
||||
other.chapterName == chapterName &&
|
||||
other.pageList == pageList;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, chapterDir.hashCode);
|
||||
hash = _SystemHash.combine(hash, mangaDir.hashCode);
|
||||
hash = _SystemHash.combine(hash, chapterName.hashCode);
|
||||
hash = _SystemHash.combine(hash, pageList.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ConvertToCBZRef on AutoDisposeFutureProviderRef<List<String>> {
|
||||
/// The parameter `chapterDir` of this provider.
|
||||
String get chapterDir;
|
||||
|
||||
/// The parameter `mangaDir` of this provider.
|
||||
String get mangaDir;
|
||||
|
||||
/// The parameter `chapterName` of this provider.
|
||||
String get chapterName;
|
||||
|
||||
/// The parameter `pageList` of this provider.
|
||||
List<String> get pageList;
|
||||
}
|
||||
|
||||
class _ConvertToCBZProviderElement
|
||||
extends AutoDisposeFutureProviderElement<List<String>>
|
||||
with ConvertToCBZRef {
|
||||
_ConvertToCBZProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
String get chapterDir => (origin as ConvertToCBZProvider).chapterDir;
|
||||
@override
|
||||
String get mangaDir => (origin as ConvertToCBZProvider).mangaDir;
|
||||
@override
|
||||
String get chapterName => (origin as ConvertToCBZProvider).chapterName;
|
||||
@override
|
||||
List<String> get pageList => (origin as ConvertToCBZProvider).pageList;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@ import 'dart:convert';
|
|||
import 'dart:io';
|
||||
import 'dart:ui';
|
||||
import 'package:connectivity_plus/connectivity_plus.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/page.dart';
|
||||
|
|
@ -28,7 +29,6 @@ import 'package:mangayomi/utils/headers.dart';
|
|||
import 'package:mangayomi/utils/reg_exp_matcher.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'download_provider.g.dart';
|
||||
|
||||
@riverpod
|
||||
|
|
@ -56,350 +56,369 @@ Future<void> downloadChapter(
|
|||
bool? useWifi,
|
||||
VoidCallback? callback,
|
||||
}) async {
|
||||
bool onlyOnWifi = useWifi ?? ref.read(onlyOnWifiStateProvider);
|
||||
final connectivity = await Connectivity().checkConnectivity();
|
||||
final isOnWifi =
|
||||
connectivity.contains(ConnectivityResult.wifi) ||
|
||||
connectivity.contains(ConnectivityResult.ethernet);
|
||||
if (onlyOnWifi && !isOnWifi) {
|
||||
botToast(navigatorKey.currentContext!.l10n.downloads_are_limited_to_wifi);
|
||||
return;
|
||||
}
|
||||
final http = MClient.init(
|
||||
reqcopyWith: {'useDartHttpClient': true, 'followRedirects': false},
|
||||
);
|
||||
final keepAlive = ref.keepAlive();
|
||||
|
||||
List<PageUrl> pageUrls = [];
|
||||
List<PageUrl> pages = [];
|
||||
final StorageProvider storageProvider = StorageProvider();
|
||||
await storageProvider.requestPermission();
|
||||
final mangaMainDirectory = await storageProvider.getMangaMainDirectory(
|
||||
chapter,
|
||||
);
|
||||
List<Track>? subtitles;
|
||||
bool isOk = false;
|
||||
final manga = chapter.manga.value!;
|
||||
final chapterName = chapter.name!.replaceForbiddenCharacters(' ');
|
||||
final itemType = chapter.manga.value!.itemType;
|
||||
final chapterDirectory = (await storageProvider.getMangaChapterDirectory(
|
||||
chapter,
|
||||
mangaMainDirectory: mangaMainDirectory,
|
||||
))!;
|
||||
await Directory(chapterDirectory.path).create(recursive: true);
|
||||
Map<String, String> videoHeader = {};
|
||||
Map<String, String> htmlHeader = {
|
||||
"Priority": "u=0, i",
|
||||
"User-Agent":
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
|
||||
};
|
||||
bool hasM3U8File = false;
|
||||
bool nonM3U8File = false;
|
||||
M3u8Downloader? m3u8Downloader;
|
||||
|
||||
Future<void> processConvert() async {
|
||||
if (!ref.read(saveAsCBZArchiveStateProvider)) return;
|
||||
try {
|
||||
await ref.read(
|
||||
convertToCBZProvider(
|
||||
chapterDirectory.path,
|
||||
mangaMainDirectory!.path,
|
||||
chapter.name!,
|
||||
pages.map((e) => e.fileName!).toList(),
|
||||
).future,
|
||||
);
|
||||
} catch (error) {
|
||||
botToast("Failed to create CBZ: $error");
|
||||
try {
|
||||
bool onlyOnWifi = useWifi ?? ref.read(onlyOnWifiStateProvider);
|
||||
final connectivity = await Connectivity().checkConnectivity();
|
||||
final isOnWifi =
|
||||
connectivity.contains(ConnectivityResult.wifi) ||
|
||||
connectivity.contains(ConnectivityResult.ethernet);
|
||||
if (onlyOnWifi && !isOnWifi) {
|
||||
botToast(navigatorKey.currentContext!.l10n.downloads_are_limited_to_wifi);
|
||||
return;
|
||||
}
|
||||
}
|
||||
final http = MClient.init(
|
||||
reqcopyWith: {'useDartHttpClient': true, 'followRedirects': false},
|
||||
);
|
||||
|
||||
Future<void> setProgress(DownloadProgress progress) async {
|
||||
if (progress.isCompleted && itemType == ItemType.manga) {
|
||||
await processConvert();
|
||||
List<PageUrl> pageUrls = [];
|
||||
List<PageUrl> pages = [];
|
||||
final StorageProvider storageProvider = StorageProvider();
|
||||
await storageProvider.requestPermission();
|
||||
final mangaMainDirectory = await storageProvider.getMangaMainDirectory(
|
||||
chapter,
|
||||
);
|
||||
List<Track>? subtitles;
|
||||
bool isOk = false;
|
||||
final manga = chapter.manga.value!;
|
||||
final chapterName = chapter.name!.replaceForbiddenCharacters(' ');
|
||||
final itemType = chapter.manga.value!.itemType;
|
||||
final chapterDirectory = (await storageProvider.getMangaChapterDirectory(
|
||||
chapter,
|
||||
mangaMainDirectory: mangaMainDirectory,
|
||||
))!;
|
||||
await Directory(chapterDirectory.path).create(recursive: true);
|
||||
Map<String, String> videoHeader = {};
|
||||
Map<String, String> htmlHeader = {
|
||||
"Priority": "u=0, i",
|
||||
"User-Agent":
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
|
||||
};
|
||||
bool hasM3U8File = false;
|
||||
bool nonM3U8File = false;
|
||||
M3u8Downloader? m3u8Downloader;
|
||||
|
||||
Future<void> processConvert() async {
|
||||
if (!ref.read(saveAsCBZArchiveStateProvider)) return;
|
||||
try {
|
||||
await ref.read(
|
||||
convertToCBZProvider(
|
||||
chapterDirectory.path,
|
||||
mangaMainDirectory!.path,
|
||||
chapter.name!,
|
||||
pages.map((e) => e.fileName!).toList(),
|
||||
).future,
|
||||
);
|
||||
} catch (error) {
|
||||
botToast("Failed to create CBZ: $error");
|
||||
}
|
||||
}
|
||||
final download = isar.downloads.getSync(chapter.id!);
|
||||
if (download == null) {
|
||||
final download = Download(
|
||||
id: chapter.id,
|
||||
succeeded: progress.completed == 0
|
||||
? 0
|
||||
: (progress.completed / progress.total * 100).toInt(),
|
||||
failed: 0,
|
||||
total: 100,
|
||||
isDownload: progress.isCompleted,
|
||||
isStartDownload: true,
|
||||
);
|
||||
isar.writeTxnSync(() {
|
||||
isar.downloads.putSync(download..chapter.value = chapter);
|
||||
});
|
||||
} else {
|
||||
|
||||
Future<void> setProgress(DownloadProgress progress) async {
|
||||
if (progress.isCompleted && itemType == ItemType.manga) {
|
||||
await processConvert();
|
||||
}
|
||||
final download = isar.downloads.getSync(chapter.id!);
|
||||
if (download != null && progress.total != 0) {
|
||||
if (download == null) {
|
||||
final download = Download(
|
||||
id: chapter.id,
|
||||
succeeded: progress.completed == 0
|
||||
? 0
|
||||
: (progress.completed / progress.total * 100).toInt(),
|
||||
failed: 0,
|
||||
total: 100,
|
||||
isDownload: progress.isCompleted,
|
||||
isStartDownload: true,
|
||||
);
|
||||
isar.writeTxnSync(() {
|
||||
isar.downloads.putSync(
|
||||
download
|
||||
..succeeded = progress.completed == 0
|
||||
? 0
|
||||
: (progress.completed / progress.total * 100).toInt()
|
||||
..total = 100
|
||||
..failed = 0
|
||||
..isDownload = progress.isCompleted,
|
||||
);
|
||||
isar.downloads.putSync(download..chapter.value = chapter);
|
||||
});
|
||||
} else {
|
||||
final download = isar.downloads.getSync(chapter.id!);
|
||||
if (download != null && progress.total != 0) {
|
||||
isar.writeTxnSync(() {
|
||||
isar.downloads.putSync(
|
||||
download
|
||||
..succeeded = progress.completed == 0
|
||||
? 0
|
||||
: (progress.completed / progress.total * 100).toInt()
|
||||
..total = 100
|
||||
..failed = 0
|
||||
..isDownload = progress.isCompleted,
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setProgress(DownloadProgress(0, 0, itemType));
|
||||
void savePageUrls() {
|
||||
final settings = isar.settings.getSync(227)!;
|
||||
List<ChapterPageurls>? chapterPageUrls = [];
|
||||
for (var chapterPageUrl in settings.chapterPageUrlsList ?? []) {
|
||||
if (chapterPageUrl.chapterId != chapter.id) {
|
||||
chapterPageUrls.add(chapterPageUrl);
|
||||
}
|
||||
}
|
||||
final chapterPageHeaders = pageUrls
|
||||
.map((e) => e.headers == null ? null : jsonEncode(e.headers))
|
||||
.toList();
|
||||
chapterPageUrls.add(
|
||||
ChapterPageurls()
|
||||
..chapterId = chapter.id
|
||||
..urls = pageUrls.map((e) => e.url).toList()
|
||||
..chapterUrl = chapter.url
|
||||
..headers = chapterPageHeaders.first != null
|
||||
? chapterPageHeaders.map((e) => e.toString()).toList()
|
||||
: null,
|
||||
);
|
||||
isar.writeTxnSync(
|
||||
() => isar.settings.putSync(
|
||||
settings
|
||||
..chapterPageUrlsList = chapterPageUrls
|
||||
..updatedAt = DateTime.now().millisecondsSinceEpoch,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (itemType == ItemType.manga) {
|
||||
ref.read(getChapterPagesProvider(chapter: chapter).future).then((value) {
|
||||
if (value.pageUrls.isNotEmpty) {
|
||||
pageUrls = value.pageUrls;
|
||||
isOk = true;
|
||||
}
|
||||
});
|
||||
} else if (itemType == ItemType.anime) {
|
||||
ref.read(getVideoListProvider(episode: chapter).future).then((
|
||||
value,
|
||||
) async {
|
||||
final m3u8Urls = value.$1
|
||||
.where(
|
||||
(element) =>
|
||||
element.originalUrl.endsWith(".m3u8") ||
|
||||
element.originalUrl.endsWith(".m3u"),
|
||||
)
|
||||
.toList();
|
||||
final nonM3u8Urls = value.$1
|
||||
.where((element) => element.originalUrl.isMediaVideo())
|
||||
.toList();
|
||||
nonM3U8File = nonM3u8Urls.isNotEmpty;
|
||||
hasM3U8File = nonM3U8File ? false : m3u8Urls.isNotEmpty;
|
||||
final videosUrls = nonM3U8File ? nonM3u8Urls : m3u8Urls;
|
||||
if (videosUrls.isNotEmpty) {
|
||||
subtitles = videosUrls.first.subtitles;
|
||||
if (hasM3U8File) {
|
||||
m3u8Downloader = M3u8Downloader(
|
||||
m3u8Url: videosUrls.first.url,
|
||||
downloadDir: chapterDirectory.path,
|
||||
headers: videosUrls.first.headers ?? {},
|
||||
subtitles: subtitles,
|
||||
fileName: p.join(mangaMainDirectory!.path, "$chapterName.mp4"),
|
||||
chapter: chapter,
|
||||
);
|
||||
} else {
|
||||
pageUrls = [PageUrl(videosUrls.first.url)];
|
||||
}
|
||||
videoHeader.addAll(videosUrls.first.headers ?? {});
|
||||
isOk = true;
|
||||
}
|
||||
});
|
||||
} else if (itemType == ItemType.novel && chapter.url != null) {
|
||||
final cookie = MClient.getCookiesPref(chapter.url!);
|
||||
final headers = htmlHeader;
|
||||
if (cookie.isNotEmpty) {
|
||||
final userAgent = isar.settings.getSync(227)!.userAgent!;
|
||||
headers.addAll(cookie);
|
||||
headers[HttpHeaders.userAgentHeader] = userAgent;
|
||||
}
|
||||
final res = await http.get(Uri.parse(chapter.url!), headers: headers);
|
||||
if (res.headers.containsKey("Location")) {
|
||||
pageUrls = [PageUrl(res.headers["Location"]!)];
|
||||
} else {
|
||||
pageUrls = [PageUrl(chapter.url!)];
|
||||
}
|
||||
isOk = true;
|
||||
}
|
||||
|
||||
await Future.doWhile(() async {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
if (isOk == true) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
if (pageUrls.isNotEmpty) {
|
||||
bool cbzFileExist =
|
||||
await File(
|
||||
p.join(mangaMainDirectory!.path, "${chapter.name}.cbz"),
|
||||
).exists() &&
|
||||
ref.read(saveAsCBZArchiveStateProvider);
|
||||
bool mp4FileExist = await File(
|
||||
p.join(mangaMainDirectory.path, "$chapterName.mp4"),
|
||||
).exists();
|
||||
bool htmlFileExist = await File(
|
||||
p.join(mangaMainDirectory.path, "$chapterName.html"),
|
||||
).exists();
|
||||
if (!cbzFileExist && itemType == ItemType.manga ||
|
||||
!mp4FileExist && itemType == ItemType.anime ||
|
||||
!htmlFileExist && itemType == ItemType.novel) {
|
||||
final mainDirectory = (await storageProvider.getDirectory())!;
|
||||
for (var index = 0; index < pageUrls.length; index++) {
|
||||
if (Platform.isAndroid) {
|
||||
if (!(await File(
|
||||
p.join(mainDirectory.path, ".nomedia"),
|
||||
).exists())) {
|
||||
await File(p.join(mainDirectory.path, ".nomedia")).create();
|
||||
}
|
||||
}
|
||||
final page = pageUrls[index];
|
||||
final cookie = MClient.getCookiesPref(page.url);
|
||||
final headers = itemType == ItemType.manga
|
||||
? ref.read(
|
||||
headersProvider(
|
||||
source: manga.source!,
|
||||
lang: manga.lang!,
|
||||
sourceId: manga.sourceId,
|
||||
),
|
||||
)
|
||||
: itemType == ItemType.anime
|
||||
? videoHeader
|
||||
: htmlHeader;
|
||||
if (cookie.isNotEmpty) {
|
||||
final userAgent = isar.settings.getSync(227)!.userAgent!;
|
||||
headers.addAll(cookie);
|
||||
headers[HttpHeaders.userAgentHeader] = userAgent;
|
||||
}
|
||||
Map<String, String> pageHeaders = headers;
|
||||
pageHeaders.addAll(page.headers ?? {});
|
||||
|
||||
if (itemType == ItemType.manga) {
|
||||
final file = File(
|
||||
p.join(chapterDirectory.path, "${padIndex(index)}.jpg"),
|
||||
);
|
||||
if (!file.existsSync()) {
|
||||
pages.add(
|
||||
PageUrl(
|
||||
page.url.trim().trimLeft().trimRight(),
|
||||
headers: pageHeaders,
|
||||
fileName: p.join(
|
||||
chapterDirectory.path,
|
||||
"${padIndex(index)}.jpg",
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
} else if (itemType == ItemType.anime) {
|
||||
final file = File(
|
||||
p.join(mangaMainDirectory.path, "$chapterName.mp4"),
|
||||
);
|
||||
if (!file.existsSync()) {
|
||||
pages.add(
|
||||
PageUrl(
|
||||
page.url.trim().trimLeft().trimRight(),
|
||||
headers: pageHeaders,
|
||||
fileName: p.join(mangaMainDirectory.path, "$chapterName.mp4"),
|
||||
),
|
||||
);
|
||||
}
|
||||
} else {
|
||||
final file = File(
|
||||
p.join(chapterDirectory.path, "$chapterName.html"),
|
||||
);
|
||||
if (!file.existsSync()) {
|
||||
pages.add(
|
||||
PageUrl(
|
||||
page.url.trim().trimLeft().trimRight(),
|
||||
headers: pageHeaders,
|
||||
fileName: p.join(chapterDirectory.path, "$chapterName.html"),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pages.isEmpty && pageUrls.isNotEmpty) {
|
||||
await processConvert();
|
||||
savePageUrls();
|
||||
final download = Download(
|
||||
id: chapter.id,
|
||||
succeeded: 0,
|
||||
failed: 0,
|
||||
total: 0,
|
||||
isDownload: true,
|
||||
isStartDownload: false,
|
||||
);
|
||||
|
||||
isar.writeTxnSync(() {
|
||||
isar.downloads.putSync(download..chapter.value = chapter);
|
||||
});
|
||||
} else {
|
||||
savePageUrls();
|
||||
await MDownloader(
|
||||
chapter: chapter,
|
||||
pageUrls: pages,
|
||||
subtitles: subtitles,
|
||||
subDownloadDir: chapterDirectory.path,
|
||||
).download((progress) {
|
||||
setProgress(progress);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setProgress(DownloadProgress(0, 0, itemType));
|
||||
void savePageUrls() {
|
||||
final settings = isar.settings.getSync(227)!;
|
||||
List<ChapterPageurls>? chapterPageUrls = [];
|
||||
for (var chapterPageUrl in settings.chapterPageUrlsList ?? []) {
|
||||
if (chapterPageUrl.chapterId != chapter.id) {
|
||||
chapterPageUrls.add(chapterPageUrl);
|
||||
}
|
||||
}
|
||||
final chapterPageHeaders = pageUrls
|
||||
.map((e) => e.headers == null ? null : jsonEncode(e.headers))
|
||||
.toList();
|
||||
chapterPageUrls.add(
|
||||
ChapterPageurls()
|
||||
..chapterId = chapter.id
|
||||
..urls = pageUrls.map((e) => e.url).toList()
|
||||
..chapterUrl = chapter.url
|
||||
..headers = chapterPageHeaders.first != null
|
||||
? chapterPageHeaders.map((e) => e.toString()).toList()
|
||||
: null,
|
||||
);
|
||||
isar.writeTxnSync(
|
||||
() => isar.settings.putSync(
|
||||
settings
|
||||
..chapterPageUrlsList = chapterPageUrls
|
||||
..updatedAt = DateTime.now().millisecondsSinceEpoch,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (itemType == ItemType.manga) {
|
||||
ref.read(getChapterPagesProvider(chapter: chapter).future).then((value) {
|
||||
if (value.pageUrls.isNotEmpty) {
|
||||
pageUrls = value.pageUrls;
|
||||
isOk = true;
|
||||
}
|
||||
});
|
||||
} else if (itemType == ItemType.anime) {
|
||||
ref.read(getVideoListProvider(episode: chapter).future).then((value) async {
|
||||
final m3u8Urls = value.$1
|
||||
.where(
|
||||
(element) =>
|
||||
element.originalUrl.endsWith(".m3u8") ||
|
||||
element.originalUrl.endsWith(".m3u"),
|
||||
)
|
||||
.toList();
|
||||
final nonM3u8Urls = value.$1
|
||||
.where((element) => element.originalUrl.isMediaVideo())
|
||||
.toList();
|
||||
nonM3U8File = nonM3u8Urls.isNotEmpty;
|
||||
hasM3U8File = nonM3U8File ? false : m3u8Urls.isNotEmpty;
|
||||
final videosUrls = nonM3U8File ? nonM3u8Urls : m3u8Urls;
|
||||
if (videosUrls.isNotEmpty) {
|
||||
subtitles = videosUrls.first.subtitles;
|
||||
if (hasM3U8File) {
|
||||
m3u8Downloader = M3u8Downloader(
|
||||
m3u8Url: videosUrls.first.url,
|
||||
downloadDir: chapterDirectory.path,
|
||||
headers: videosUrls.first.headers ?? {},
|
||||
subtitles: subtitles,
|
||||
fileName: p.join(mangaMainDirectory!.path, "$chapterName.mp4"),
|
||||
chapter: chapter,
|
||||
);
|
||||
} else {
|
||||
pageUrls = [PageUrl(videosUrls.first.url)];
|
||||
}
|
||||
videoHeader.addAll(videosUrls.first.headers ?? {});
|
||||
isOk = true;
|
||||
}
|
||||
});
|
||||
} else if (itemType == ItemType.novel && chapter.url != null) {
|
||||
final cookie = MClient.getCookiesPref(chapter.url!);
|
||||
final headers = htmlHeader;
|
||||
if (cookie.isNotEmpty) {
|
||||
final userAgent = isar.settings.getSync(227)!.userAgent!;
|
||||
headers.addAll(cookie);
|
||||
headers[HttpHeaders.userAgentHeader] = userAgent;
|
||||
}
|
||||
final res = await http.get(Uri.parse(chapter.url!), headers: headers);
|
||||
if (res.headers.containsKey("Location")) {
|
||||
pageUrls = [PageUrl(res.headers["Location"]!)];
|
||||
} else {
|
||||
pageUrls = [PageUrl(chapter.url!)];
|
||||
}
|
||||
isOk = true;
|
||||
}
|
||||
|
||||
await Future.doWhile(() async {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
if (isOk == true) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
if (pageUrls.isNotEmpty) {
|
||||
bool cbzFileExist =
|
||||
await File(
|
||||
p.join(mangaMainDirectory!.path, "${chapter.name}.cbz"),
|
||||
).exists() &&
|
||||
ref.read(saveAsCBZArchiveStateProvider);
|
||||
bool mp4FileExist = await File(
|
||||
p.join(mangaMainDirectory.path, "$chapterName.mp4"),
|
||||
).exists();
|
||||
bool htmlFileExist = await File(
|
||||
p.join(mangaMainDirectory.path, "$chapterName.html"),
|
||||
).exists();
|
||||
if (!cbzFileExist && itemType == ItemType.manga ||
|
||||
!mp4FileExist && itemType == ItemType.anime ||
|
||||
!htmlFileExist && itemType == ItemType.novel) {
|
||||
final mainDirectory = (await storageProvider.getDirectory())!;
|
||||
for (var index = 0; index < pageUrls.length; index++) {
|
||||
if (Platform.isAndroid) {
|
||||
if (!(await File(p.join(mainDirectory.path, ".nomedia")).exists())) {
|
||||
await File(p.join(mainDirectory.path, ".nomedia")).create();
|
||||
}
|
||||
}
|
||||
final page = pageUrls[index];
|
||||
final cookie = MClient.getCookiesPref(page.url);
|
||||
final headers = itemType == ItemType.manga
|
||||
? ref.read(
|
||||
headersProvider(
|
||||
source: manga.source!,
|
||||
lang: manga.lang!,
|
||||
sourceId: manga.sourceId,
|
||||
),
|
||||
)
|
||||
: itemType == ItemType.anime
|
||||
? videoHeader
|
||||
: htmlHeader;
|
||||
if (cookie.isNotEmpty) {
|
||||
final userAgent = isar.settings.getSync(227)!.userAgent!;
|
||||
headers.addAll(cookie);
|
||||
headers[HttpHeaders.userAgentHeader] = userAgent;
|
||||
}
|
||||
Map<String, String> pageHeaders = headers;
|
||||
pageHeaders.addAll(page.headers ?? {});
|
||||
|
||||
if (itemType == ItemType.manga) {
|
||||
final file = File(
|
||||
p.join(chapterDirectory.path, "${padIndex(index)}.jpg"),
|
||||
);
|
||||
if (!file.existsSync()) {
|
||||
pages.add(
|
||||
PageUrl(
|
||||
page.url.trim().trimLeft().trimRight(),
|
||||
headers: pageHeaders,
|
||||
fileName: p.join(
|
||||
chapterDirectory.path,
|
||||
"${padIndex(index)}.jpg",
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
} else if (itemType == ItemType.anime) {
|
||||
final file = File(
|
||||
p.join(mangaMainDirectory.path, "$chapterName.mp4"),
|
||||
);
|
||||
if (!file.existsSync()) {
|
||||
pages.add(
|
||||
PageUrl(
|
||||
page.url.trim().trimLeft().trimRight(),
|
||||
headers: pageHeaders,
|
||||
fileName: p.join(mangaMainDirectory.path, "$chapterName.mp4"),
|
||||
),
|
||||
);
|
||||
}
|
||||
} else {
|
||||
final file = File(p.join(chapterDirectory.path, "$chapterName.html"));
|
||||
if (!file.existsSync()) {
|
||||
pages.add(
|
||||
PageUrl(
|
||||
page.url.trim().trimLeft().trimRight(),
|
||||
headers: pageHeaders,
|
||||
fileName: p.join(chapterDirectory.path, "$chapterName.html"),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pages.isEmpty && pageUrls.isNotEmpty) {
|
||||
await processConvert();
|
||||
savePageUrls();
|
||||
final download = Download(
|
||||
id: chapter.id,
|
||||
succeeded: 0,
|
||||
failed: 0,
|
||||
total: 0,
|
||||
isDownload: true,
|
||||
isStartDownload: false,
|
||||
);
|
||||
|
||||
isar.writeTxnSync(() {
|
||||
isar.downloads.putSync(download..chapter.value = chapter);
|
||||
});
|
||||
} else {
|
||||
savePageUrls();
|
||||
await MDownloader(
|
||||
chapter: chapter,
|
||||
pageUrls: pages,
|
||||
subtitles: subtitles,
|
||||
subDownloadDir: chapterDirectory.path,
|
||||
).download((progress) {
|
||||
} else if (hasM3U8File) {
|
||||
await m3u8Downloader?.download((progress) {
|
||||
setProgress(progress);
|
||||
});
|
||||
}
|
||||
} else if (hasM3U8File) {
|
||||
await m3u8Downloader?.download((progress) {
|
||||
setProgress(progress);
|
||||
});
|
||||
}
|
||||
if (callback != null) {
|
||||
callback();
|
||||
if (callback != null) {
|
||||
callback();
|
||||
}
|
||||
keepAlive.close();
|
||||
} catch (_) {
|
||||
keepAlive.close();
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
Future<void> processDownloads(Ref ref, {bool? useWifi}) async {
|
||||
final ongoingDownloads = await isar.downloads
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
.isDownloadEqualTo(false)
|
||||
.isStartDownloadEqualTo(true)
|
||||
.findAll();
|
||||
final maxConcurrentDownloads = ref.read(concurrentDownloadsStateProvider);
|
||||
int index = 0;
|
||||
int downloaded = 0;
|
||||
int current = 0;
|
||||
await Future.doWhile(() async {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
if (ongoingDownloads.length == downloaded) {
|
||||
return false;
|
||||
}
|
||||
if (current < maxConcurrentDownloads) {
|
||||
current++;
|
||||
final downloadItem = ongoingDownloads[index++];
|
||||
final chapter = downloadItem.chapter.value!;
|
||||
chapter.cancelDownloads(downloadItem.id);
|
||||
ref.read(
|
||||
downloadChapterProvider(
|
||||
chapter: chapter,
|
||||
useWifi: useWifi,
|
||||
callback: () {
|
||||
downloaded++;
|
||||
current--;
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
final keepAlive = ref.keepAlive();
|
||||
try {
|
||||
final ongoingDownloads = await isar.downloads
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
.isDownloadEqualTo(false)
|
||||
.isStartDownloadEqualTo(true)
|
||||
.findAll();
|
||||
final maxConcurrentDownloads = ref.read(concurrentDownloadsStateProvider);
|
||||
int index = 0;
|
||||
int downloaded = 0;
|
||||
int current = 0;
|
||||
await Future.doWhile(() async {
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
if (ongoingDownloads.length == downloaded) {
|
||||
return false;
|
||||
}
|
||||
if (current < maxConcurrentDownloads) {
|
||||
current++;
|
||||
final downloadItem = ongoingDownloads[index++];
|
||||
final chapter = downloadItem.chapter.value!;
|
||||
chapter.cancelDownloads(downloadItem.id);
|
||||
ref.read(
|
||||
downloadChapterProvider(
|
||||
chapter: chapter,
|
||||
useWifi: useWifi,
|
||||
callback: () {
|
||||
downloaded++;
|
||||
current--;
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
keepAlive.close();
|
||||
} catch (_) {
|
||||
keepAlive.close();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,431 +6,231 @@ part of 'download_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$addDownloadToQueueHash() =>
|
||||
r'35e8e724755be265a9bf167e4641336630a465d2';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [addDownloadToQueue].
|
||||
@ProviderFor(addDownloadToQueue)
|
||||
const addDownloadToQueueProvider = AddDownloadToQueueFamily();
|
||||
const addDownloadToQueueProvider = AddDownloadToQueueFamily._();
|
||||
|
||||
/// See also [addDownloadToQueue].
|
||||
class AddDownloadToQueueFamily extends Family<AsyncValue<void>> {
|
||||
/// See also [addDownloadToQueue].
|
||||
const AddDownloadToQueueFamily();
|
||||
final class AddDownloadToQueueProvider
|
||||
extends $FunctionalProvider<AsyncValue<void>, void, FutureOr<void>>
|
||||
with $FutureModifier<void>, $FutureProvider<void> {
|
||||
const AddDownloadToQueueProvider._({
|
||||
required AddDownloadToQueueFamily super.from,
|
||||
required Chapter super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'addDownloadToQueueProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [addDownloadToQueue].
|
||||
AddDownloadToQueueProvider call({required Chapter chapter}) {
|
||||
return AddDownloadToQueueProvider(chapter: chapter);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$addDownloadToQueueHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'addDownloadToQueueProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AddDownloadToQueueProvider getProviderOverride(
|
||||
covariant AddDownloadToQueueProvider provider,
|
||||
) {
|
||||
return call(chapter: provider.chapter);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
$FutureProviderElement<void> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
|
||||
|
||||
@override
|
||||
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
|
||||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'addDownloadToQueueProvider';
|
||||
}
|
||||
|
||||
/// See also [addDownloadToQueue].
|
||||
class AddDownloadToQueueProvider extends AutoDisposeFutureProvider<void> {
|
||||
/// See also [addDownloadToQueue].
|
||||
AddDownloadToQueueProvider({required Chapter chapter})
|
||||
: this._internal(
|
||||
(ref) =>
|
||||
addDownloadToQueue(ref as AddDownloadToQueueRef, chapter: chapter),
|
||||
from: addDownloadToQueueProvider,
|
||||
name: r'addDownloadToQueueProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$addDownloadToQueueHash,
|
||||
dependencies: AddDownloadToQueueFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
AddDownloadToQueueFamily._allTransitiveDependencies,
|
||||
chapter: chapter,
|
||||
);
|
||||
|
||||
AddDownloadToQueueProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.chapter,
|
||||
}) : super.internal();
|
||||
|
||||
final Chapter chapter;
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<void> Function(AddDownloadToQueueRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: AddDownloadToQueueProvider._internal(
|
||||
(ref) => create(ref as AddDownloadToQueueRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
chapter: chapter,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<void> createElement() {
|
||||
return _AddDownloadToQueueProviderElement(this);
|
||||
FutureOr<void> create(Ref ref) {
|
||||
final argument = this.argument as Chapter;
|
||||
return addDownloadToQueue(ref, chapter: argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is AddDownloadToQueueProvider && other.chapter == chapter;
|
||||
return other is AddDownloadToQueueProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, chapter.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin AddDownloadToQueueRef on AutoDisposeFutureProviderRef<void> {
|
||||
/// The parameter `chapter` of this provider.
|
||||
Chapter get chapter;
|
||||
}
|
||||
String _$addDownloadToQueueHash() =>
|
||||
r'35e8e724755be265a9bf167e4641336630a465d2';
|
||||
|
||||
class _AddDownloadToQueueProviderElement
|
||||
extends AutoDisposeFutureProviderElement<void>
|
||||
with AddDownloadToQueueRef {
|
||||
_AddDownloadToQueueProviderElement(super.provider);
|
||||
final class AddDownloadToQueueFamily extends $Family
|
||||
with $FunctionalFamilyOverride<FutureOr<void>, Chapter> {
|
||||
const AddDownloadToQueueFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'addDownloadToQueueProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
AddDownloadToQueueProvider call({required Chapter chapter}) =>
|
||||
AddDownloadToQueueProvider._(argument: chapter, from: this);
|
||||
|
||||
@override
|
||||
Chapter get chapter => (origin as AddDownloadToQueueProvider).chapter;
|
||||
String toString() => r'addDownloadToQueueProvider';
|
||||
}
|
||||
|
||||
@ProviderFor(downloadChapter)
|
||||
const downloadChapterProvider = DownloadChapterFamily._();
|
||||
|
||||
final class DownloadChapterProvider
|
||||
extends $FunctionalProvider<AsyncValue<void>, void, FutureOr<void>>
|
||||
with $FutureModifier<void>, $FutureProvider<void> {
|
||||
const DownloadChapterProvider._({
|
||||
required DownloadChapterFamily super.from,
|
||||
required ({Chapter chapter, bool? useWifi, VoidCallback? callback})
|
||||
super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'downloadChapterProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$downloadChapterHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'downloadChapterProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<void> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<void> create(Ref ref) {
|
||||
final argument =
|
||||
this.argument
|
||||
as ({Chapter chapter, bool? useWifi, VoidCallback? callback});
|
||||
return downloadChapter(
|
||||
ref,
|
||||
chapter: argument.chapter,
|
||||
useWifi: argument.useWifi,
|
||||
callback: argument.callback,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is DownloadChapterProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
String _$downloadChapterHash() => r'5eb401736efdfb2990fda6e2d97160aaeb94aec1';
|
||||
|
||||
/// See also [downloadChapter].
|
||||
@ProviderFor(downloadChapter)
|
||||
const downloadChapterProvider = DownloadChapterFamily();
|
||||
final class DownloadChapterFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<void>,
|
||||
({Chapter chapter, bool? useWifi, VoidCallback? callback})
|
||||
> {
|
||||
const DownloadChapterFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'downloadChapterProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
/// See also [downloadChapter].
|
||||
class DownloadChapterFamily extends Family<AsyncValue<void>> {
|
||||
/// See also [downloadChapter].
|
||||
const DownloadChapterFamily();
|
||||
|
||||
/// See also [downloadChapter].
|
||||
DownloadChapterProvider call({
|
||||
required Chapter chapter,
|
||||
bool? useWifi,
|
||||
void Function()? callback,
|
||||
}) {
|
||||
return DownloadChapterProvider(
|
||||
chapter: chapter,
|
||||
useWifi: useWifi,
|
||||
callback: callback,
|
||||
);
|
||||
}
|
||||
VoidCallback? callback,
|
||||
}) => DownloadChapterProvider._(
|
||||
argument: (chapter: chapter, useWifi: useWifi, callback: callback),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
DownloadChapterProvider getProviderOverride(
|
||||
covariant DownloadChapterProvider provider,
|
||||
) {
|
||||
return call(
|
||||
chapter: provider.chapter,
|
||||
useWifi: provider.useWifi,
|
||||
callback: provider.callback,
|
||||
);
|
||||
}
|
||||
|
||||
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'downloadChapterProvider';
|
||||
String toString() => r'downloadChapterProvider';
|
||||
}
|
||||
|
||||
/// See also [downloadChapter].
|
||||
class DownloadChapterProvider extends AutoDisposeFutureProvider<void> {
|
||||
/// See also [downloadChapter].
|
||||
DownloadChapterProvider({
|
||||
required Chapter chapter,
|
||||
bool? useWifi,
|
||||
void Function()? callback,
|
||||
}) : this._internal(
|
||||
(ref) => downloadChapter(
|
||||
ref as DownloadChapterRef,
|
||||
chapter: chapter,
|
||||
useWifi: useWifi,
|
||||
callback: callback,
|
||||
),
|
||||
from: downloadChapterProvider,
|
||||
name: r'downloadChapterProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$downloadChapterHash,
|
||||
dependencies: DownloadChapterFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
DownloadChapterFamily._allTransitiveDependencies,
|
||||
chapter: chapter,
|
||||
useWifi: useWifi,
|
||||
callback: callback,
|
||||
@ProviderFor(processDownloads)
|
||||
const processDownloadsProvider = ProcessDownloadsFamily._();
|
||||
|
||||
final class ProcessDownloadsProvider
|
||||
extends $FunctionalProvider<AsyncValue<void>, void, FutureOr<void>>
|
||||
with $FutureModifier<void>, $FutureProvider<void> {
|
||||
const ProcessDownloadsProvider._({
|
||||
required ProcessDownloadsFamily super.from,
|
||||
required bool? super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'processDownloadsProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
DownloadChapterProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.chapter,
|
||||
required this.useWifi,
|
||||
required this.callback,
|
||||
}) : super.internal();
|
||||
|
||||
final Chapter chapter;
|
||||
final bool? useWifi;
|
||||
final void Function()? callback;
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$processDownloadsHash();
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<void> Function(DownloadChapterRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: DownloadChapterProvider._internal(
|
||||
(ref) => create(ref as DownloadChapterRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
chapter: chapter,
|
||||
useWifi: useWifi,
|
||||
callback: callback,
|
||||
),
|
||||
);
|
||||
String toString() {
|
||||
return r'processDownloadsProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<void> createElement() {
|
||||
return _DownloadChapterProviderElement(this);
|
||||
$FutureProviderElement<void> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<void> create(Ref ref) {
|
||||
final argument = this.argument as bool?;
|
||||
return processDownloads(ref, useWifi: argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is DownloadChapterProvider &&
|
||||
other.chapter == chapter &&
|
||||
other.useWifi == useWifi &&
|
||||
other.callback == callback;
|
||||
return other is ProcessDownloadsProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, chapter.hashCode);
|
||||
hash = _SystemHash.combine(hash, useWifi.hashCode);
|
||||
hash = _SystemHash.combine(hash, callback.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin DownloadChapterRef on AutoDisposeFutureProviderRef<void> {
|
||||
/// The parameter `chapter` of this provider.
|
||||
Chapter get chapter;
|
||||
|
||||
/// The parameter `useWifi` of this provider.
|
||||
bool? get useWifi;
|
||||
|
||||
/// The parameter `callback` of this provider.
|
||||
void Function()? get callback;
|
||||
}
|
||||
|
||||
class _DownloadChapterProviderElement
|
||||
extends AutoDisposeFutureProviderElement<void>
|
||||
with DownloadChapterRef {
|
||||
_DownloadChapterProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Chapter get chapter => (origin as DownloadChapterProvider).chapter;
|
||||
@override
|
||||
bool? get useWifi => (origin as DownloadChapterProvider).useWifi;
|
||||
@override
|
||||
void Function()? get callback => (origin as DownloadChapterProvider).callback;
|
||||
}
|
||||
|
||||
String _$processDownloadsHash() => r'ef5107f9674f2175a7aa18b8e4fc4555f3b6b584';
|
||||
|
||||
/// See also [processDownloads].
|
||||
@ProviderFor(processDownloads)
|
||||
const processDownloadsProvider = ProcessDownloadsFamily();
|
||||
|
||||
/// See also [processDownloads].
|
||||
class ProcessDownloadsFamily extends Family<AsyncValue<void>> {
|
||||
/// See also [processDownloads].
|
||||
const ProcessDownloadsFamily();
|
||||
|
||||
/// See also [processDownloads].
|
||||
ProcessDownloadsProvider call({bool? useWifi}) {
|
||||
return ProcessDownloadsProvider(useWifi: useWifi);
|
||||
}
|
||||
|
||||
@override
|
||||
ProcessDownloadsProvider getProviderOverride(
|
||||
covariant ProcessDownloadsProvider provider,
|
||||
) {
|
||||
return call(useWifi: provider.useWifi);
|
||||
}
|
||||
|
||||
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'processDownloadsProvider';
|
||||
}
|
||||
|
||||
/// See also [processDownloads].
|
||||
class ProcessDownloadsProvider extends AutoDisposeFutureProvider<void> {
|
||||
/// See also [processDownloads].
|
||||
ProcessDownloadsProvider({bool? useWifi})
|
||||
: this._internal(
|
||||
(ref) => processDownloads(ref as ProcessDownloadsRef, useWifi: useWifi),
|
||||
from: processDownloadsProvider,
|
||||
final class ProcessDownloadsFamily extends $Family
|
||||
with $FunctionalFamilyOverride<FutureOr<void>, bool?> {
|
||||
const ProcessDownloadsFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'processDownloadsProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$processDownloadsHash,
|
||||
dependencies: ProcessDownloadsFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
ProcessDownloadsFamily._allTransitiveDependencies,
|
||||
useWifi: useWifi,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
ProcessDownloadsProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.useWifi,
|
||||
}) : super.internal();
|
||||
|
||||
final bool? useWifi;
|
||||
ProcessDownloadsProvider call({bool? useWifi}) =>
|
||||
ProcessDownloadsProvider._(argument: useWifi, from: this);
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<void> Function(ProcessDownloadsRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: ProcessDownloadsProvider._internal(
|
||||
(ref) => create(ref as ProcessDownloadsRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
useWifi: useWifi,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<void> createElement() {
|
||||
return _ProcessDownloadsProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is ProcessDownloadsProvider && other.useWifi == useWifi;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, useWifi.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
}
|
||||
String toString() => r'processDownloadsProvider';
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ProcessDownloadsRef on AutoDisposeFutureProviderRef<void> {
|
||||
/// The parameter `useWifi` of this provider.
|
||||
bool? get useWifi;
|
||||
}
|
||||
|
||||
class _ProcessDownloadsProviderElement
|
||||
extends AutoDisposeFutureProviderElement<void>
|
||||
with ProcessDownloadsRef {
|
||||
_ProcessDownloadsProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
bool? get useWifi => (origin as ProcessDownloadsProvider).useWifi;
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -6,25 +6,59 @@ part of 'state_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(MangaHomeDisplayTypeState)
|
||||
const mangaHomeDisplayTypeStateProvider = MangaHomeDisplayTypeStateProvider._();
|
||||
|
||||
final class MangaHomeDisplayTypeStateProvider
|
||||
extends $NotifierProvider<MangaHomeDisplayTypeState, DisplayType> {
|
||||
const MangaHomeDisplayTypeStateProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'mangaHomeDisplayTypeStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$mangaHomeDisplayTypeStateHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
MangaHomeDisplayTypeState create() => MangaHomeDisplayTypeState();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(DisplayType value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<DisplayType>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$mangaHomeDisplayTypeStateHash() =>
|
||||
r'6e91cef2e4a9925cab1a7a764ac6a0e741398fb2';
|
||||
|
||||
/// See also [MangaHomeDisplayTypeState].
|
||||
@ProviderFor(MangaHomeDisplayTypeState)
|
||||
final mangaHomeDisplayTypeStateProvider =
|
||||
AutoDisposeNotifierProvider<
|
||||
MangaHomeDisplayTypeState,
|
||||
DisplayType
|
||||
>.internal(
|
||||
MangaHomeDisplayTypeState.new,
|
||||
name: r'mangaHomeDisplayTypeStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$mangaHomeDisplayTypeStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$MangaHomeDisplayTypeState = AutoDisposeNotifier<DisplayType>;
|
||||
// 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 _$MangaHomeDisplayTypeState extends $Notifier<DisplayType> {
|
||||
DisplayType build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<DisplayType, DisplayType>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<DisplayType, DisplayType>,
|
||||
DisplayType,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,62 +6,169 @@ part of 'color_filter_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(CustomColorFilterState)
|
||||
const customColorFilterStateProvider = CustomColorFilterStateProvider._();
|
||||
|
||||
final class CustomColorFilterStateProvider
|
||||
extends $NotifierProvider<CustomColorFilterState, CustomColorFilter?> {
|
||||
const CustomColorFilterStateProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'customColorFilterStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$customColorFilterStateHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
CustomColorFilterState create() => CustomColorFilterState();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(CustomColorFilter? value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<CustomColorFilter?>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$customColorFilterStateHash() =>
|
||||
r'e83ed3712f2f69c6ad15b2b3b10ff17cf8bb2898';
|
||||
|
||||
/// See also [CustomColorFilterState].
|
||||
@ProviderFor(CustomColorFilterState)
|
||||
final customColorFilterStateProvider =
|
||||
AutoDisposeNotifierProvider<
|
||||
CustomColorFilterState,
|
||||
CustomColorFilter?
|
||||
>.internal(
|
||||
CustomColorFilterState.new,
|
||||
name: r'customColorFilterStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$customColorFilterStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
abstract class _$CustomColorFilterState extends $Notifier<CustomColorFilter?> {
|
||||
CustomColorFilter? build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<CustomColorFilter?, CustomColorFilter?>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<CustomColorFilter?, CustomColorFilter?>,
|
||||
CustomColorFilter?,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
@ProviderFor(EnableCustomColorFilterState)
|
||||
const enableCustomColorFilterStateProvider =
|
||||
EnableCustomColorFilterStateProvider._();
|
||||
|
||||
final class EnableCustomColorFilterStateProvider
|
||||
extends $NotifierProvider<EnableCustomColorFilterState, bool> {
|
||||
const EnableCustomColorFilterStateProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'enableCustomColorFilterStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$enableCustomColorFilterStateHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
EnableCustomColorFilterState create() => EnableCustomColorFilterState();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(bool value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<bool>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
typedef _$CustomColorFilterState = AutoDisposeNotifier<CustomColorFilter?>;
|
||||
String _$enableCustomColorFilterStateHash() =>
|
||||
r'20579f0101c7f64051d63ea85813aeb068fdb3c9';
|
||||
|
||||
/// See also [EnableCustomColorFilterState].
|
||||
@ProviderFor(EnableCustomColorFilterState)
|
||||
final enableCustomColorFilterStateProvider =
|
||||
AutoDisposeNotifierProvider<EnableCustomColorFilterState, bool>.internal(
|
||||
EnableCustomColorFilterState.new,
|
||||
name: r'enableCustomColorFilterStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$enableCustomColorFilterStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
abstract class _$EnableCustomColorFilterState extends $Notifier<bool> {
|
||||
bool build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<bool, bool>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<bool, bool>,
|
||||
bool,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
@ProviderFor(ColorFilterBlendModeState)
|
||||
const colorFilterBlendModeStateProvider = ColorFilterBlendModeStateProvider._();
|
||||
|
||||
final class ColorFilterBlendModeStateProvider
|
||||
extends $NotifierProvider<ColorFilterBlendModeState, ColorFilterBlendMode> {
|
||||
const ColorFilterBlendModeStateProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'colorFilterBlendModeStateProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$colorFilterBlendModeStateHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
ColorFilterBlendModeState create() => ColorFilterBlendModeState();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(ColorFilterBlendMode value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<ColorFilterBlendMode>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
typedef _$EnableCustomColorFilterState = AutoDisposeNotifier<bool>;
|
||||
String _$colorFilterBlendModeStateHash() =>
|
||||
r'92e84b352b519dd32d1c418d7477a10a8921bc19';
|
||||
|
||||
/// See also [ColorFilterBlendModeState].
|
||||
@ProviderFor(ColorFilterBlendModeState)
|
||||
final colorFilterBlendModeStateProvider =
|
||||
AutoDisposeNotifierProvider<
|
||||
ColorFilterBlendModeState,
|
||||
ColorFilterBlendMode
|
||||
>.internal(
|
||||
ColorFilterBlendModeState.new,
|
||||
name: r'colorFilterBlendModeStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$colorFilterBlendModeStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$ColorFilterBlendModeState = AutoDisposeNotifier<ColorFilterBlendMode>;
|
||||
// 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 _$ColorFilterBlendModeState
|
||||
extends $Notifier<ColorFilterBlendMode> {
|
||||
ColorFilterBlendMode build();
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build();
|
||||
final ref = this.ref as $Ref<ColorFilterBlendMode, ColorFilterBlendMode>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<ColorFilterBlendMode, ColorFilterBlendMode>,
|
||||
ColorFilterBlendMode,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import 'package:mangayomi/src/rust/api/image.dart';
|
|||
import 'package:mangayomi/src/rust/frb_generated.dart';
|
||||
import 'package:mangayomi/utils/extensions/others.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
part 'crop_borders_provider.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
|
|
|
|||
|
|
@ -6,166 +6,93 @@ part of 'crop_borders_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$cropBordersHash() => r'04b24357737d6cc75caa38feca77bb5d41f00aa6';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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 [cropBorders].
|
||||
@ProviderFor(cropBorders)
|
||||
const cropBordersProvider = CropBordersFamily();
|
||||
const cropBordersProvider = CropBordersFamily._();
|
||||
|
||||
/// See also [cropBorders].
|
||||
class CropBordersFamily extends Family<AsyncValue<Uint8List?>> {
|
||||
/// See also [cropBorders].
|
||||
const CropBordersFamily();
|
||||
|
||||
/// See also [cropBorders].
|
||||
CropBordersProvider call({
|
||||
required UChapDataPreload data,
|
||||
required bool cropBorder,
|
||||
}) {
|
||||
return CropBordersProvider(data: data, cropBorder: cropBorder);
|
||||
}
|
||||
|
||||
@override
|
||||
CropBordersProvider getProviderOverride(
|
||||
covariant CropBordersProvider provider,
|
||||
) {
|
||||
return call(data: provider.data, cropBorder: provider.cropBorder);
|
||||
}
|
||||
|
||||
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'cropBordersProvider';
|
||||
}
|
||||
|
||||
/// See also [cropBorders].
|
||||
class CropBordersProvider extends FutureProvider<Uint8List?> {
|
||||
/// See also [cropBorders].
|
||||
CropBordersProvider({
|
||||
required UChapDataPreload data,
|
||||
required bool cropBorder,
|
||||
}) : this._internal(
|
||||
(ref) => cropBorders(
|
||||
ref as CropBordersRef,
|
||||
data: data,
|
||||
cropBorder: cropBorder,
|
||||
),
|
||||
from: cropBordersProvider,
|
||||
final class CropBordersProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<Uint8List?>,
|
||||
Uint8List?,
|
||||
FutureOr<Uint8List?>
|
||||
>
|
||||
with $FutureModifier<Uint8List?>, $FutureProvider<Uint8List?> {
|
||||
const CropBordersProvider._({
|
||||
required CropBordersFamily super.from,
|
||||
required ({UChapDataPreload data, bool cropBorder}) super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'cropBordersProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$cropBordersHash,
|
||||
dependencies: CropBordersFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
CropBordersFamily._allTransitiveDependencies,
|
||||
data: data,
|
||||
cropBorder: cropBorder,
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
CropBordersProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.data,
|
||||
required this.cropBorder,
|
||||
}) : super.internal();
|
||||
|
||||
final UChapDataPreload data;
|
||||
final bool cropBorder;
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$cropBordersHash();
|
||||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<Uint8List?> Function(CropBordersRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: CropBordersProvider._internal(
|
||||
(ref) => create(ref as CropBordersRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
data: data,
|
||||
cropBorder: cropBorder,
|
||||
),
|
||||
String toString() {
|
||||
return r'cropBordersProvider'
|
||||
''
|
||||
'$argument';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<Uint8List?> $createElement($ProviderPointer pointer) =>
|
||||
$FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<Uint8List?> create(Ref ref) {
|
||||
final argument =
|
||||
this.argument as ({UChapDataPreload data, bool cropBorder});
|
||||
return cropBorders(
|
||||
ref,
|
||||
data: argument.data,
|
||||
cropBorder: argument.cropBorder,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
FutureProviderElement<Uint8List?> createElement() {
|
||||
return _CropBordersProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is CropBordersProvider &&
|
||||
other.data == data &&
|
||||
other.cropBorder == cropBorder;
|
||||
return other is CropBordersProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, data.hashCode);
|
||||
hash = _SystemHash.combine(hash, cropBorder.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin CropBordersRef on FutureProviderRef<Uint8List?> {
|
||||
/// The parameter `data` of this provider.
|
||||
UChapDataPreload get data;
|
||||
String _$cropBordersHash() => r'04b24357737d6cc75caa38feca77bb5d41f00aa6';
|
||||
|
||||
/// The parameter `cropBorder` of this provider.
|
||||
bool get cropBorder;
|
||||
}
|
||||
final class CropBordersFamily extends $Family
|
||||
with
|
||||
$FunctionalFamilyOverride<
|
||||
FutureOr<Uint8List?>,
|
||||
({UChapDataPreload data, bool cropBorder})
|
||||
> {
|
||||
const CropBordersFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'cropBordersProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: false,
|
||||
);
|
||||
|
||||
class _CropBordersProviderElement extends FutureProviderElement<Uint8List?>
|
||||
with CropBordersRef {
|
||||
_CropBordersProviderElement(super.provider);
|
||||
CropBordersProvider call({
|
||||
required UChapDataPreload data,
|
||||
required bool cropBorder,
|
||||
}) => CropBordersProvider._(
|
||||
argument: (data: data, cropBorder: cropBorder),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
UChapDataPreload get data => (origin as CropBordersProvider).data;
|
||||
@override
|
||||
bool get cropBorder => (origin as CropBordersProvider).cropBorder;
|
||||
String toString() => r'cropBordersProvider';
|
||||
}
|
||||
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/services/get_chapter_pages.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'manga_reader_provider.g.dart';
|
||||
|
||||
class ChapterWithPages {
|
||||
final Chapter chapter;
|
||||
|
|
@ -10,21 +11,14 @@ class ChapterWithPages {
|
|||
ChapterWithPages({required this.chapter, required this.pages});
|
||||
}
|
||||
|
||||
class MangaReaderController extends FamilyAsyncNotifier<ChapterWithPages, int> {
|
||||
@override
|
||||
Future<ChapterWithPages> build(int chapterId) async {
|
||||
final chap = await isar.chapters.get(chapterId);
|
||||
if (chap == null) {
|
||||
throw Exception('Chapter #$chapterId not found');
|
||||
}
|
||||
|
||||
final pages = await ref.read(getChapterPagesProvider(chapter: chap).future);
|
||||
|
||||
return ChapterWithPages(chapter: chap, pages: pages);
|
||||
@riverpod
|
||||
Future<ChapterWithPages> mangaReader(Ref ref, int chapterId) async {
|
||||
final chap = await isar.chapters.get(chapterId);
|
||||
if (chap == null) {
|
||||
throw Exception('Chapter #$chapterId not found');
|
||||
}
|
||||
}
|
||||
|
||||
final mangaReaderProvider =
|
||||
AsyncNotifierProvider.family<MangaReaderController, ChapterWithPages, int>(
|
||||
MangaReaderController.new,
|
||||
);
|
||||
final pages = await ref.read(getChapterPagesProvider(chapter: chap).future);
|
||||
|
||||
return ChapterWithPages(chapter: chap, pages: pages);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,85 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'manga_reader_provider.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(mangaReader)
|
||||
const mangaReaderProvider = MangaReaderFamily._();
|
||||
|
||||
final class MangaReaderProvider
|
||||
extends
|
||||
$FunctionalProvider<
|
||||
AsyncValue<ChapterWithPages>,
|
||||
ChapterWithPages,
|
||||
FutureOr<ChapterWithPages>
|
||||
>
|
||||
with $FutureModifier<ChapterWithPages>, $FutureProvider<ChapterWithPages> {
|
||||
const MangaReaderProvider._({
|
||||
required MangaReaderFamily super.from,
|
||||
required int super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'mangaReaderProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$mangaReaderHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'mangaReaderProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$FutureProviderElement<ChapterWithPages> $createElement(
|
||||
$ProviderPointer pointer,
|
||||
) => $FutureProviderElement(pointer);
|
||||
|
||||
@override
|
||||
FutureOr<ChapterWithPages> create(Ref ref) {
|
||||
final argument = this.argument as int;
|
||||
return mangaReader(ref, argument);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is MangaReaderProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
String _$mangaReaderHash() => r'cf8c44c6c3567ba4e9a0e08137ab2f29b71307eb';
|
||||
|
||||
final class MangaReaderFamily extends $Family
|
||||
with $FunctionalFamilyOverride<FutureOr<ChapterWithPages>, int> {
|
||||
const MangaReaderFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'mangaReaderProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
MangaReaderProvider call(int chapterId) =>
|
||||
MangaReaderProvider._(argument: chapterId, from: this);
|
||||
|
||||
@override
|
||||
String toString() => r'mangaReaderProvider';
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
import 'package:flutter_riverpod/misc.dart';
|
||||
import 'package:isar_community/isar.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/download.dart';
|
||||
|
|
@ -27,7 +28,7 @@ class CurrentIndex extends _$CurrentIndex {
|
|||
.getPageIndex();
|
||||
}
|
||||
|
||||
setCurrentIndex(int currentIndex) {
|
||||
void setCurrentIndex(int currentIndex) {
|
||||
state = currentIndex;
|
||||
}
|
||||
}
|
||||
|
|
@ -46,7 +47,14 @@ BoxFit getBoxFit(ScaleType scaleType) {
|
|||
@riverpod
|
||||
class ReaderController extends _$ReaderController {
|
||||
@override
|
||||
void build({required Chapter chapter}) {}
|
||||
KeepAliveLink build({required Chapter chapter}) {
|
||||
_keepAliveLink = ref.keepAlive();
|
||||
return _keepAliveLink!;
|
||||
}
|
||||
|
||||
KeepAliveLink? _keepAliveLink;
|
||||
|
||||
KeepAliveLink? get keepAliveLink => _keepAliveLink;
|
||||
|
||||
Manga getManga() {
|
||||
return chapter.manga.value!;
|
||||
|
|
@ -440,6 +448,7 @@ extension ChapterExtensions on Chapter {
|
|||
trackStateProvider(
|
||||
track: track,
|
||||
itemType: manga.itemType,
|
||||
widgetRef: ref,
|
||||
).notifier,
|
||||
)
|
||||
.updateManga();
|
||||
|
|
|
|||
|
|
@ -6,286 +6,193 @@ part of 'reader_controller_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$currentIndexHash() => r'7cf7d12cc79f02fec4de750e4aedf5c9e09e5284';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
_SystemHash._();
|
||||
@ProviderFor(CurrentIndex)
|
||||
const currentIndexProvider = CurrentIndexFamily._();
|
||||
|
||||
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);
|
||||
final class CurrentIndexProvider extends $NotifierProvider<CurrentIndex, int> {
|
||||
const CurrentIndexProvider._({
|
||||
required CurrentIndexFamily super.from,
|
||||
required Chapter super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'currentIndexProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$currentIndexHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'currentIndexProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
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));
|
||||
@$internal
|
||||
@override
|
||||
CurrentIndex create() => CurrentIndex();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(int value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<int>(value),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is CurrentIndexProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _$CurrentIndex extends BuildlessAutoDisposeNotifier<int> {
|
||||
late final Chapter chapter;
|
||||
String _$currentIndexHash() => r'e0b5e5b8a2afa5e8df699784009720334e1c9e80';
|
||||
|
||||
final class CurrentIndexFamily extends $Family
|
||||
with $ClassFamilyOverride<CurrentIndex, int, int, int, Chapter> {
|
||||
const CurrentIndexFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'currentIndexProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
CurrentIndexProvider call(Chapter chapter) =>
|
||||
CurrentIndexProvider._(argument: chapter, from: this);
|
||||
|
||||
@override
|
||||
String toString() => r'currentIndexProvider';
|
||||
}
|
||||
|
||||
abstract class _$CurrentIndex extends $Notifier<int> {
|
||||
late final _$args = ref.$arg as Chapter;
|
||||
Chapter get chapter => _$args;
|
||||
|
||||
int build(Chapter chapter);
|
||||
}
|
||||
|
||||
/// See also [CurrentIndex].
|
||||
@ProviderFor(CurrentIndex)
|
||||
const currentIndexProvider = CurrentIndexFamily();
|
||||
|
||||
/// See also [CurrentIndex].
|
||||
class CurrentIndexFamily extends Family<int> {
|
||||
/// See also [CurrentIndex].
|
||||
const CurrentIndexFamily();
|
||||
|
||||
/// See also [CurrentIndex].
|
||||
CurrentIndexProvider call(Chapter chapter) {
|
||||
return CurrentIndexProvider(chapter);
|
||||
}
|
||||
|
||||
@$mustCallSuper
|
||||
@override
|
||||
CurrentIndexProvider getProviderOverride(
|
||||
covariant CurrentIndexProvider provider,
|
||||
) {
|
||||
return call(provider.chapter);
|
||||
}
|
||||
|
||||
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'currentIndexProvider';
|
||||
}
|
||||
|
||||
/// See also [CurrentIndex].
|
||||
class CurrentIndexProvider
|
||||
extends AutoDisposeNotifierProviderImpl<CurrentIndex, int> {
|
||||
/// See also [CurrentIndex].
|
||||
CurrentIndexProvider(Chapter chapter)
|
||||
: this._internal(
|
||||
() => CurrentIndex()..chapter = chapter,
|
||||
from: currentIndexProvider,
|
||||
name: r'currentIndexProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$currentIndexHash,
|
||||
dependencies: CurrentIndexFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
CurrentIndexFamily._allTransitiveDependencies,
|
||||
chapter: chapter,
|
||||
);
|
||||
|
||||
CurrentIndexProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.chapter,
|
||||
}) : super.internal();
|
||||
|
||||
final Chapter chapter;
|
||||
|
||||
@override
|
||||
int runNotifierBuild(covariant CurrentIndex notifier) {
|
||||
return notifier.build(chapter);
|
||||
}
|
||||
|
||||
@override
|
||||
Override overrideWith(CurrentIndex Function() create) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: CurrentIndexProvider._internal(
|
||||
() => create()..chapter = chapter,
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
chapter: chapter,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeNotifierProviderElement<CurrentIndex, int> createElement() {
|
||||
return _CurrentIndexProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is CurrentIndexProvider && other.chapter == chapter;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, chapter.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
void runBuild() {
|
||||
final created = build(_$args);
|
||||
final ref = this.ref as $Ref<int, int>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<int, int>,
|
||||
int,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin CurrentIndexRef on AutoDisposeNotifierProviderRef<int> {
|
||||
/// The parameter `chapter` of this provider.
|
||||
Chapter get chapter;
|
||||
}
|
||||
|
||||
class _CurrentIndexProviderElement
|
||||
extends AutoDisposeNotifierProviderElement<CurrentIndex, int>
|
||||
with CurrentIndexRef {
|
||||
_CurrentIndexProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Chapter get chapter => (origin as CurrentIndexProvider).chapter;
|
||||
}
|
||||
|
||||
String _$readerControllerHash() => r'8b2995dcf849eddff308a105a2e06c9534096fac';
|
||||
|
||||
abstract class _$ReaderController extends BuildlessAutoDisposeNotifier<void> {
|
||||
late final Chapter chapter;
|
||||
|
||||
void build({required Chapter chapter});
|
||||
}
|
||||
|
||||
/// See also [ReaderController].
|
||||
@ProviderFor(ReaderController)
|
||||
const readerControllerProvider = ReaderControllerFamily();
|
||||
const readerControllerProvider = ReaderControllerFamily._();
|
||||
|
||||
/// See also [ReaderController].
|
||||
class ReaderControllerFamily extends Family<void> {
|
||||
/// See also [ReaderController].
|
||||
const ReaderControllerFamily();
|
||||
final class ReaderControllerProvider
|
||||
extends $NotifierProvider<ReaderController, KeepAliveLink> {
|
||||
const ReaderControllerProvider._({
|
||||
required ReaderControllerFamily super.from,
|
||||
required Chapter super.argument,
|
||||
}) : super(
|
||||
retry: null,
|
||||
name: r'readerControllerProvider',
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
/// See also [ReaderController].
|
||||
ReaderControllerProvider call({required Chapter chapter}) {
|
||||
return ReaderControllerProvider(chapter: chapter);
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$readerControllerHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'readerControllerProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
ReaderControllerProvider getProviderOverride(
|
||||
covariant ReaderControllerProvider provider,
|
||||
) {
|
||||
return call(chapter: provider.chapter);
|
||||
}
|
||||
ReaderController create() => ReaderController();
|
||||
|
||||
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'readerControllerProvider';
|
||||
}
|
||||
|
||||
/// See also [ReaderController].
|
||||
class ReaderControllerProvider
|
||||
extends AutoDisposeNotifierProviderImpl<ReaderController, void> {
|
||||
/// See also [ReaderController].
|
||||
ReaderControllerProvider({required Chapter chapter})
|
||||
: this._internal(
|
||||
() => ReaderController()..chapter = chapter,
|
||||
from: readerControllerProvider,
|
||||
name: r'readerControllerProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$readerControllerHash,
|
||||
dependencies: ReaderControllerFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
ReaderControllerFamily._allTransitiveDependencies,
|
||||
chapter: chapter,
|
||||
);
|
||||
|
||||
ReaderControllerProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
required super.allTransitiveDependencies,
|
||||
required super.debugGetCreateSourceHash,
|
||||
required super.from,
|
||||
required this.chapter,
|
||||
}) : super.internal();
|
||||
|
||||
final Chapter chapter;
|
||||
|
||||
@override
|
||||
void runNotifierBuild(covariant ReaderController notifier) {
|
||||
return notifier.build(chapter: chapter);
|
||||
}
|
||||
|
||||
@override
|
||||
Override overrideWith(ReaderController Function() create) {
|
||||
return ProviderOverride(
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(KeepAliveLink value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
override: ReaderControllerProvider._internal(
|
||||
() => create()..chapter = chapter,
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
debugGetCreateSourceHash: null,
|
||||
chapter: chapter,
|
||||
),
|
||||
providerOverride: $SyncValueProvider<KeepAliveLink>(value),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeNotifierProviderElement<ReaderController, void> createElement() {
|
||||
return _ReaderControllerProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is ReaderControllerProvider && other.chapter == chapter;
|
||||
return other is ReaderControllerProvider && other.argument == argument;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode {
|
||||
var hash = _SystemHash.combine(0, runtimeType.hashCode);
|
||||
hash = _SystemHash.combine(hash, chapter.hashCode);
|
||||
|
||||
return _SystemHash.finish(hash);
|
||||
return argument.hashCode;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ReaderControllerRef on AutoDisposeNotifierProviderRef<void> {
|
||||
/// The parameter `chapter` of this provider.
|
||||
Chapter get chapter;
|
||||
}
|
||||
String _$readerControllerHash() => r'25b13bbbbd961a5c3dbae3cc0ea58017d7bb5ce8';
|
||||
|
||||
class _ReaderControllerProviderElement
|
||||
extends AutoDisposeNotifierProviderElement<ReaderController, void>
|
||||
with ReaderControllerRef {
|
||||
_ReaderControllerProviderElement(super.provider);
|
||||
final class ReaderControllerFamily extends $Family
|
||||
with
|
||||
$ClassFamilyOverride<
|
||||
ReaderController,
|
||||
KeepAliveLink,
|
||||
KeepAliveLink,
|
||||
KeepAliveLink,
|
||||
Chapter
|
||||
> {
|
||||
const ReaderControllerFamily._()
|
||||
: super(
|
||||
retry: null,
|
||||
name: r'readerControllerProvider',
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
isAutoDispose: true,
|
||||
);
|
||||
|
||||
ReaderControllerProvider call({required Chapter chapter}) =>
|
||||
ReaderControllerProvider._(argument: chapter, from: this);
|
||||
|
||||
@override
|
||||
Chapter get chapter => (origin as ReaderControllerProvider).chapter;
|
||||
String toString() => r'readerControllerProvider';
|
||||
}
|
||||
|
||||
// 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 _$ReaderController extends $Notifier<KeepAliveLink> {
|
||||
late final _$args = ref.$arg as Chapter;
|
||||
Chapter get chapter => _$args;
|
||||
|
||||
KeepAliveLink build({required Chapter chapter});
|
||||
@$mustCallSuper
|
||||
@override
|
||||
void runBuild() {
|
||||
final created = build(chapter: _$args);
|
||||
final ref = this.ref as $Ref<KeepAliveLink, KeepAliveLink>;
|
||||
final element =
|
||||
ref.element
|
||||
as $ClassProviderElement<
|
||||
AnyNotifier<KeepAliveLink, KeepAliveLink>,
|
||||
KeepAliveLink,
|
||||
Object?,
|
||||
Object?
|
||||
>;
|
||||
element.handleValue(ref, created);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue