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