This commit is contained in:
kodjomoustapha 2024-12-25 15:12:08 +01:00
parent 2af2729559
commit a9e91a1237
12 changed files with 193 additions and 503 deletions

View file

@ -34,22 +34,11 @@ class History {
chapterId = json['chapterId'];
date = json['date'];
id = json['id'];
isManga = json['isManga'];
itemType = ItemType.values[json['itemType'] ?? 0];
mangaId = json['mangaId'];
}
History.fromJsonV1(Map<String, dynamic> json) {
chapterId = json['chapterId'];
date = json['date'];
id = json['id'];
itemType = json['isManga'] is bool
? json['isManga'] == true
? ItemType.manga
: ItemType.anime
: ItemType.manga;
mangaId = json['mangaId'];
}
Map<String, dynamic> toJson() => {
'chapterId': chapterId,
'date': date,

View file

@ -87,6 +87,7 @@ class Manga {
id = json['id'];
imageUrl = json['imageUrl'];
isLocalArchive = json['isLocalArchive'];
isManga = json['isManga'];
itemType = ItemType.values[json['itemType'] ?? 0];
lang = json['lang'];
lastRead = json['lastRead'];
@ -98,33 +99,6 @@ class Manga {
customCoverFromTracker = json['customCoverFromTracker'];
}
Manga.fromJsonV1(Map<String, dynamic> json) {
author = json['author'];
artist = json['artist'];
categories = json['categories']?.cast<int>();
customCoverImage = json['customCoverImage']?.cast<int>();
dateAdded = json['dateAdded'];
description = json['description'];
favorite = json['favorite']!;
genre = json['genre']?.cast<String>();
id = json['id'];
imageUrl = json['imageUrl'];
isLocalArchive = json['isLocalArchive'];
itemType = json['isManga'] is bool
? json['isManga'] == true
? ItemType.manga
: ItemType.anime
: ItemType.manga;
lang = json['lang'];
lastRead = json['lastRead'];
lastUpdate = json['lastUpdate'];
link = json['link'];
name = json['name'];
source = json['source'];
status = Status.values[json['status']];
customCoverFromTracker = json['customCoverFromTracker'];
}
Map<String, dynamic> toJson() => {
'author': author,
'artist': artist,

View file

@ -459,8 +459,8 @@ class Settings {
? CustomColorFilter.fromJson(json['customColorFilter'])
: null;
enableCustomColorFilter = json['enableCustomColorFilter'];
colorFilterBlendMode = ColorFilterBlendMode
.values[json['colorFilterBlendMode'] ?? ColorFilterBlendMode.none];
colorFilterBlendMode = ColorFilterBlendMode.values[
json['colorFilterBlendMode'] ?? ColorFilterBlendMode.none.index];
playerSubtitleSettings = json['playerSubtitleSettings'] != null
? PlayerSubtitleSettings.fromJson(json['playerSubtitleSettings'])
: null;
@ -470,7 +470,7 @@ class Settings {
mangaGridSize = json['mangaGridSize'];
animeGridSize = json['animeGridSize'];
disableSectionType =
SectionType.values[json['disableSectionType'] ?? SectionType.all];
SectionType.values[json['disableSectionType'] ?? SectionType.all.index];
useLibass = json['useLibass'];
libraryFilterNovelBookMarkedType = json['libraryFilterNovelBookMarkedType'];
libraryFilterNovelDownloadType = json['libraryFilterNovelDownloadType'];
@ -487,7 +487,7 @@ class Settings {
? SortLibraryManga.fromJson(json['sortLibraryNovel'])
: null;
novelDisplayType = DisplayType
.values[json['novelDisplayType'] ?? DisplayType.compactGrid.index];
.values[json['novelDisplayType'] ?? DisplayType.comfortableGrid.index];
hideManga = json['hideManga'];
hideAnime = json['hideAnime'];
hideNovel = json['hideNovel'];

View file

@ -125,38 +125,6 @@ class Source {
SourceCodeLanguage.values[json['sourceCodeLanguage'] ?? 0];
}
Source.fromJsonV1(Map<String, dynamic> json) {
apiUrl = json['apiUrl'];
appMinVerReq = json['appMinVerReq'];
baseUrl = json['baseUrl'];
dateFormat = json['dateFormat'];
dateFormatLocale = json['dateFormatLocale'];
hasCloudflare = json['hasCloudflare'];
headers = json['headers'];
iconUrl = json['iconUrl'];
id = json['id'];
isActive = json['isActive'];
isAdded = json['isAdded'];
isFullData = json['isFullData'];
isManga = json['isManga'];
itemType = isManga == true ? ItemType.manga : ItemType.anime;
isNsfw = json['isNsfw'];
isPinned = json['isPinned'];
lang = json['lang'];
lastUsed = json['lastUsed'];
name = json['name'];
sourceCode = json['sourceCode'];
sourceCodeUrl = json['sourceCodeUrl'];
typeSource = json['typeSource'];
version = json['version'];
versionLast = json['versionLast'];
additionalParams = json['additionalParams'] ?? "";
isObsolete = json['isObsolete'];
isLocal = json['isLocal'];
sourceCodeLanguage =
SourceCodeLanguage.values[json['sourceCodeLanguage'] ?? 0];
}
Map<String, dynamic> toJson() => {
'apiUrl': apiUrl,
'appMinVerReq': appMinVerReq,

View file

@ -6,7 +6,7 @@ part of 'migration.dart';
// RiverpodGenerator
// **************************************************************************
String _$migrationHash() => r'748a99069dd212f5eacce8185e414d80fefeaae9';
String _$migrationHash() => r'7354a8368b73fdfcfd284848b9837b4bc9047e7f';
/// See also [migration].
@ProviderFor(migration)

View file

@ -6,7 +6,7 @@ part of 'track_state_providers.dart';
// RiverpodGenerator
// **************************************************************************
String _$trackStateHash() => r'996bec4204e84eb74a2b818410788e5fbf81fec2';
String _$trackStateHash() => r'f8d5a962cfbff41400945c0e7140071c76fa80fd';
/// Copied from Dart SDK
class _SystemHash {

View file

@ -6,7 +6,7 @@ part of 'update_manga_detail_providers.dart';
// RiverpodGenerator
// **************************************************************************
String _$updateMangaDetailHash() => r'a86fe8fea46e411203182287c970cd80cc9a1a0c';
String _$updateMangaDetailHash() => r'dcc5fd8f666959f62ee9ad6540eb0493ac9759f1';
/// Copied from Dart SDK
class _SystemHash {

View file

@ -158,10 +158,8 @@ class BackupAndRestore extends ConsumerWidget {
onPressed: () async {
try {
FilePickerResult? result =
await FilePicker.platform.pickFiles(
allowMultiple: false,
type: FileType.custom,
allowedExtensions: ["backup"]);
await FilePicker.platform
.pickFiles(allowMultiple: false);
if (result != null && context.mounted) {
ref.watch(doRestoreProvider(

View file

@ -31,275 +31,168 @@ void doRestore(Ref ref, {required String path, required BuildContext context}) {
final archive = ZipDecoder().decodeStream(inputStream);
final backup = jsonDecode(utf8.decode(archive.files.first.content))
as Map<String, dynamic>;
if (backup['version'] == "1") {
restoreV1(ref, backup);
} else if (backup['version'] == "2") {
restoreV2(ref, backup);
}
BotToast.showNotification(
animationDuration: const Duration(milliseconds: 200),
animationReverseDuration: const Duration(milliseconds: 200),
duration: const Duration(seconds: 5),
backButtonBehavior: BackButtonBehavior.none,
leading: (_) => Image.asset('assets/app_icons/icon-red.png', height: 40),
title: (_) => const Text(
"Backup restored!",
style: TextStyle(fontWeight: FontWeight.bold),
),
enableSlideOff: true,
onlyOne: true,
crossPage: true);
}
@riverpod
void restoreV1(Ref ref, Map<String, dynamic> backup) {
try {
final manga =
(backup["manga"] as List?)?.map((e) => Manga.fromJsonV1(e)).toList();
final chapters =
(backup["chapters"] as List?)?.map((e) => Chapter.fromJson(e)).toList();
final categories = (backup["categories"] as List?)
?.map((e) => Category.fromJsonV1(e))
.toList();
final track =
(backup["tracks"] as List?)?.map((e) => Track.fromJson(e)).toList();
final trackPreferences = (backup["trackPreferences"] as List?)
?.map((e) => TrackPreference.fromJson(e))
.toList();
final history = (backup["history"] as List?)
?.map((e) => History.fromJsonV1(e))
.toList();
final downloads = (backup["downloads"] as List?)
?.map((e) => Download.fromJson(e))
.toList();
final settings = (backup["settings"] as List?)
?.map((e) => Settings.fromJson(e))
.toList();
final extensions = (backup["extensions"] as List?)
?.map((e) => Source.fromJsonV1(e))
.toList();
final extensionsPref = (backup["extensions_preferences"] as List?)
?.map((e) => SourcePreference.fromJson(e))
.toList();
final updates =
(backup["updates"] as List?)?.map((e) => Update.fromJson(e)).toList();
isar.writeTxnSync(() {
isar.mangas.clearSync();
if (manga != null) {
isar.mangas.putAllSync(manga);
if (chapters != null) {
isar.chapters.clearSync();
for (var chapter in chapters) {
final manga = isar.mangas.getSync(chapter.mangaId!);
if (manga != null) {
isar.chapters.putSync(chapter..manga.value = manga);
chapter.manga.saveSync();
}
}
isar.downloads.clearSync();
if (downloads != null) {
for (var download in downloads) {
final chapter = isar.chapters.getSync(download.chapterId!);
if (chapter != null) {
isar.downloads.putSync(download..chapter.value = chapter);
download.chapter.saveSync();
}
}
}
isar.historys.clearSync();
if (history != null) {
for (var element in history) {
final chapter = isar.chapters.getSync(element.chapterId!);
if (chapter != null) {
isar.historys.putSync(element..chapter.value = chapter);
element.chapter.saveSync();
}
}
}
isar.updates.clearSync();
if (updates != null) {
final tempChapters =
isar.chapters.filter().idIsNotNull().findAllSync().toList();
for (var update in updates) {
final matchingChapter = tempChapters
.where((chapter) =>
chapter.mangaId == update.mangaId &&
chapter.name == update.chapterName)
.firstOrNull;
if (matchingChapter != null) {
isar.updates.putSync(update..chapter.value = matchingChapter);
update.chapter.saveSync();
}
}
}
}
isar.categorys.clearSync();
if (categories != null) {
isar.categorys.putAllSync(categories);
}
}
isar.tracks.clearSync();
if (track != null) {
isar.tracks.putAllSync(track);
}
isar.trackPreferences.clearSync();
if (trackPreferences != null) {
isar.trackPreferences.putAllSync(trackPreferences);
}
isar.sources.clearSync();
if (extensions != null) {
isar.sources.putAllSync(extensions);
}
isar.sourcePreferences.clearSync();
if (extensionsPref != null) {
isar.sourcePreferences.putAllSync(extensionsPref);
}
isar.settings.clearSync();
if (settings != null) {
isar.settings.putAllSync(settings);
}
ref.invalidate(themeModeStateProvider);
ref.invalidate(blendLevelStateProvider);
ref.invalidate(flexSchemeColorStateProvider);
ref.invalidate(pureBlackDarkModeStateProvider);
ref.invalidate(l10nLocaleStateProvider);
});
ref.read(restoreBackupProvider(backup));
BotToast.showNotification(
animationDuration: const Duration(milliseconds: 200),
animationReverseDuration: const Duration(milliseconds: 200),
duration: const Duration(seconds: 5),
backButtonBehavior: BackButtonBehavior.none,
leading: (_) =>
Image.asset('assets/app_icons/icon-red.png', height: 40),
title: (_) => const Text(
"Backup restored!",
style: TextStyle(fontWeight: FontWeight.bold),
),
enableSlideOff: true,
onlyOne: true,
crossPage: true);
} catch (e) {
botToast(e.toString());
}
}
@riverpod
void restoreV2(Ref ref, Map<String, dynamic> backup) {
try {
final manga =
(backup["manga"] as List?)?.map((e) => Manga.fromJson(e)).toList();
final chapters =
(backup["chapters"] as List?)?.map((e) => Chapter.fromJson(e)).toList();
final categories = (backup["categories"] as List?)
?.map((e) => Category.fromJson(e))
.toList();
final track =
(backup["tracks"] as List?)?.map((e) => Track.fromJson(e)).toList();
final trackPreferences = (backup["trackPreferences"] as List?)
?.map((e) => TrackPreference.fromJson(e))
.toList();
final history =
(backup["history"] as List?)?.map((e) => History.fromJson(e)).toList();
final downloads = (backup["downloads"] as List?)
?.map((e) => Download.fromJson(e))
.toList();
final settings = (backup["settings"] as List?)
?.map((e) => Settings.fromJson(e))
.toList();
final extensions = (backup["extensions"] as List?)
?.map((e) => Source.fromJson(e))
.toList();
final extensionsPref = (backup["extensions_preferences"] as List?)
?.map((e) => SourcePreference.fromJson(e))
.toList();
final updates =
(backup["updates"] as List?)?.map((e) => Update.fromJson(e)).toList();
void restoreBackup(Ref ref, Map<String, dynamic> backup) {
final version = backup['version'];
if (["1", "2"].any((e) => e == version)) {
try {
final manga = (backup["manga"] as List?)
?.map((e) => Manga.fromJson(e)..itemType = _convertToItemType(e))
.toList();
final chapters = (backup["chapters"] as List?)
?.map((e) => Chapter.fromJson(e))
.toList();
final categories = (backup["categories"] as List?)
?.map((e) => Category.fromJson(e))
.toList();
final track = (backup["tracks"] as List?)
?.map((e) => Track.fromJson(e)..itemType = _convertToItemType(e))
.toList();
final trackPreferences = (backup["trackPreferences"] as List?)
?.map((e) => TrackPreference.fromJson(e))
.toList();
final history = (backup["history"] as List?)
?.map((e) => History.fromJson(e)..itemType = _convertToItemType(e))
.toList();
final downloads = (backup["downloads"] as List?)
?.map((e) => Download.fromJson(e))
.toList();
final settings = (backup["settings"] as List?)
?.map((e) => Settings.fromJson(e))
.toList();
final extensions = (backup["extensions"] as List?)
?.map((e) => Source.fromJson(e)..itemType = _convertToItemType(e))
.toList();
final extensionsPref = (backup["extensions_preferences"] as List?)
?.map((e) => SourcePreference.fromJson(e))
.toList();
final updates =
(backup["updates"] as List?)?.map((e) => Update.fromJson(e)).toList();
isar.writeTxnSync(() {
isar.mangas.clearSync();
if (manga != null) {
isar.mangas.putAllSync(manga);
if (chapters != null) {
isar.chapters.clearSync();
for (var chapter in chapters) {
final manga = isar.mangas.getSync(chapter.mangaId!);
if (manga != null) {
isar.chapters.putSync(chapter..manga.value = manga);
chapter.manga.saveSync();
isar.writeTxnSync(() {
isar.mangas.clearSync();
if (manga != null) {
isar.mangas.putAllSync(manga);
if (chapters != null) {
isar.chapters.clearSync();
for (var chapter in chapters) {
final manga = isar.mangas.getSync(chapter.mangaId!);
if (manga != null) {
isar.chapters.putSync(chapter..manga.value = manga);
chapter.manga.saveSync();
}
}
}
isar.downloads.clearSync();
if (downloads != null) {
for (var download in downloads) {
final chapter = isar.chapters.getSync(download.chapterId!);
if (chapter != null) {
isar.downloads.putSync(download..chapter.value = chapter);
download.chapter.saveSync();
isar.downloads.clearSync();
if (downloads != null) {
for (var download in downloads) {
final chapter = isar.chapters.getSync(download.chapterId!);
if (chapter != null) {
isar.downloads.putSync(download..chapter.value = chapter);
download.chapter.saveSync();
}
}
}
isar.historys.clearSync();
if (history != null) {
for (var element in history) {
final chapter = isar.chapters.getSync(element.chapterId!);
if (chapter != null) {
isar.historys.putSync(element..chapter.value = chapter);
element.chapter.saveSync();
}
}
}
isar.updates.clearSync();
if (updates != null) {
final tempChapters =
isar.chapters.filter().idIsNotNull().findAllSync().toList();
for (var update in updates) {
final matchingChapter = tempChapters
.where((chapter) =>
chapter.mangaId == update.mangaId &&
chapter.name == update.chapterName)
.firstOrNull;
if (matchingChapter != null) {
isar.updates.putSync(update..chapter.value = matchingChapter);
update.chapter.saveSync();
}
}
}
}
isar.historys.clearSync();
if (history != null) {
for (var element in history) {
final chapter = isar.chapters.getSync(element.chapterId!);
if (chapter != null) {
isar.historys.putSync(element..chapter.value = chapter);
element.chapter.saveSync();
}
}
}
isar.updates.clearSync();
if (updates != null) {
final tempChapters =
isar.chapters.filter().idIsNotNull().findAllSync().toList();
for (var update in updates) {
final matchingChapter = tempChapters
.where((chapter) =>
chapter.mangaId == update.mangaId &&
chapter.name == update.chapterName)
.firstOrNull;
if (matchingChapter != null) {
isar.updates.putSync(update..chapter.value = matchingChapter);
update.chapter.saveSync();
}
}
isar.categorys.clearSync();
if (categories != null) {
isar.categorys.putAllSync(categories);
}
}
isar.categorys.clearSync();
if (categories != null) {
isar.categorys.putAllSync(categories);
isar.tracks.clearSync();
if (track != null) {
isar.tracks.putAllSync(track);
}
}
isar.tracks.clearSync();
if (track != null) {
isar.tracks.putAllSync(track);
}
isar.trackPreferences.clearSync();
if (trackPreferences != null) {
isar.trackPreferences.putAllSync(trackPreferences);
}
isar.trackPreferences.clearSync();
if (trackPreferences != null) {
isar.trackPreferences.putAllSync(trackPreferences);
}
isar.sources.clearSync();
if (extensions != null) {
isar.sources.putAllSync(extensions);
}
isar.sources.clearSync();
if (extensions != null) {
isar.sources.putAllSync(extensions);
}
isar.sourcePreferences.clearSync();
if (extensionsPref != null) {
isar.sourcePreferences.putAllSync(extensionsPref);
}
isar.settings.clearSync();
if (settings != null) {
isar.settings.putAllSync(settings);
}
ref.invalidate(themeModeStateProvider);
ref.invalidate(blendLevelStateProvider);
ref.invalidate(flexSchemeColorStateProvider);
ref.invalidate(pureBlackDarkModeStateProvider);
ref.invalidate(l10nLocaleStateProvider);
});
} catch (e) {
botToast(e.toString());
isar.sourcePreferences.clearSync();
if (extensionsPref != null) {
isar.sourcePreferences.putAllSync(extensionsPref);
}
isar.settings.clearSync();
if (settings != null) {
isar.settings.putAllSync(settings);
}
ref.invalidate(themeModeStateProvider);
ref.invalidate(blendLevelStateProvider);
ref.invalidate(flexSchemeColorStateProvider);
ref.invalidate(pureBlackDarkModeStateProvider);
ref.invalidate(l10nLocaleStateProvider);
});
} catch (e) {
rethrow;
}
} else {
throw "Failed to restore the backup";
}
}
ItemType _convertToItemType(Map<String, dynamic> backup) {
final isManga = backup['isManga'];
final version = backup['version'];
return version == "2"
? ItemType.values[backup['itemType'] ?? 0]
: isManga
? ItemType.manga
: ItemType.anime;
}

View file

@ -6,7 +6,7 @@ part of 'restore.dart';
// RiverpodGenerator
// **************************************************************************
String _$doRestoreHash() => r'508725e75a03ac5f561c2cf8bf4943052d605d5b';
String _$doRestoreHash() => r'e3236bf60efbd24cc07281927ffd0ca3d43d0a9c';
/// Copied from Dart SDK
class _SystemHash {
@ -173,29 +173,29 @@ class _DoRestoreProviderElement extends AutoDisposeProviderElement<void>
BuildContext get context => (origin as DoRestoreProvider).context;
}
String _$restoreV1Hash() => r'4dca1ac4cec79fdc78bec4d71367e77caf696f17';
String _$restoreBackupHash() => r'cde06db62878869fe086453e1c7de57238650909';
/// See also [restoreV1].
@ProviderFor(restoreV1)
const restoreV1Provider = RestoreV1Family();
/// See also [restoreBackup].
@ProviderFor(restoreBackup)
const restoreBackupProvider = RestoreBackupFamily();
/// See also [restoreV1].
class RestoreV1Family extends Family<void> {
/// See also [restoreV1].
const RestoreV1Family();
/// See also [restoreBackup].
class RestoreBackupFamily extends Family<void> {
/// See also [restoreBackup].
const RestoreBackupFamily();
/// See also [restoreV1].
RestoreV1Provider call(
/// See also [restoreBackup].
RestoreBackupProvider call(
Map<String, dynamic> backup,
) {
return RestoreV1Provider(
return RestoreBackupProvider(
backup,
);
}
@override
RestoreV1Provider getProviderOverride(
covariant RestoreV1Provider provider,
RestoreBackupProvider getProviderOverride(
covariant RestoreBackupProvider provider,
) {
return call(
provider.backup,
@ -214,31 +214,32 @@ class RestoreV1Family extends Family<void> {
_allTransitiveDependencies;
@override
String? get name => r'restoreV1Provider';
String? get name => r'restoreBackupProvider';
}
/// See also [restoreV1].
class RestoreV1Provider extends AutoDisposeProvider<void> {
/// See also [restoreV1].
RestoreV1Provider(
/// See also [restoreBackup].
class RestoreBackupProvider extends AutoDisposeProvider<void> {
/// See also [restoreBackup].
RestoreBackupProvider(
Map<String, dynamic> backup,
) : this._internal(
(ref) => restoreV1(
ref as RestoreV1Ref,
(ref) => restoreBackup(
ref as RestoreBackupRef,
backup,
),
from: restoreV1Provider,
name: r'restoreV1Provider',
from: restoreBackupProvider,
name: r'restoreBackupProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$restoreV1Hash,
dependencies: RestoreV1Family._dependencies,
allTransitiveDependencies: RestoreV1Family._allTransitiveDependencies,
: _$restoreBackupHash,
dependencies: RestoreBackupFamily._dependencies,
allTransitiveDependencies:
RestoreBackupFamily._allTransitiveDependencies,
backup: backup,
);
RestoreV1Provider._internal(
RestoreBackupProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
@ -252,12 +253,12 @@ class RestoreV1Provider extends AutoDisposeProvider<void> {
@override
Override overrideWith(
void Function(RestoreV1Ref provider) create,
void Function(RestoreBackupRef provider) create,
) {
return ProviderOverride(
origin: this,
override: RestoreV1Provider._internal(
(ref) => create(ref as RestoreV1Ref),
override: RestoreBackupProvider._internal(
(ref) => create(ref as RestoreBackupRef),
from: from,
name: null,
dependencies: null,
@ -270,12 +271,12 @@ class RestoreV1Provider extends AutoDisposeProvider<void> {
@override
AutoDisposeProviderElement<void> createElement() {
return _RestoreV1ProviderElement(this);
return _RestoreBackupProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is RestoreV1Provider && other.backup == backup;
return other is RestoreBackupProvider && other.backup == backup;
}
@override
@ -289,146 +290,17 @@ class RestoreV1Provider extends AutoDisposeProvider<void> {
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin RestoreV1Ref on AutoDisposeProviderRef<void> {
mixin RestoreBackupRef on AutoDisposeProviderRef<void> {
/// The parameter `backup` of this provider.
Map<String, dynamic> get backup;
}
class _RestoreV1ProviderElement extends AutoDisposeProviderElement<void>
with RestoreV1Ref {
_RestoreV1ProviderElement(super.provider);
class _RestoreBackupProviderElement extends AutoDisposeProviderElement<void>
with RestoreBackupRef {
_RestoreBackupProviderElement(super.provider);
@override
Map<String, dynamic> get backup => (origin as RestoreV1Provider).backup;
}
String _$restoreV2Hash() => r'fbdd1978f8be7512277620e351b9a0eee1827bfc';
/// See also [restoreV2].
@ProviderFor(restoreV2)
const restoreV2Provider = RestoreV2Family();
/// See also [restoreV2].
class RestoreV2Family extends Family<void> {
/// See also [restoreV2].
const RestoreV2Family();
/// See also [restoreV2].
RestoreV2Provider call(
Map<String, dynamic> backup,
) {
return RestoreV2Provider(
backup,
);
}
@override
RestoreV2Provider getProviderOverride(
covariant RestoreV2Provider provider,
) {
return call(
provider.backup,
);
}
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'restoreV2Provider';
}
/// See also [restoreV2].
class RestoreV2Provider extends AutoDisposeProvider<void> {
/// See also [restoreV2].
RestoreV2Provider(
Map<String, dynamic> backup,
) : this._internal(
(ref) => restoreV2(
ref as RestoreV2Ref,
backup,
),
from: restoreV2Provider,
name: r'restoreV2Provider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$restoreV2Hash,
dependencies: RestoreV2Family._dependencies,
allTransitiveDependencies: RestoreV2Family._allTransitiveDependencies,
backup: backup,
);
RestoreV2Provider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.backup,
}) : super.internal();
final Map<String, dynamic> backup;
@override
Override overrideWith(
void Function(RestoreV2Ref provider) create,
) {
return ProviderOverride(
origin: this,
override: RestoreV2Provider._internal(
(ref) => create(ref as RestoreV2Ref),
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
backup: backup,
),
);
}
@override
AutoDisposeProviderElement<void> createElement() {
return _RestoreV2ProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is RestoreV2Provider && other.backup == backup;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, backup.hashCode);
return _SystemHash.finish(hash);
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin RestoreV2Ref on AutoDisposeProviderRef<void> {
/// The parameter `backup` of this provider.
Map<String, dynamic> get backup;
}
class _RestoreV2ProviderElement extends AutoDisposeProviderElement<void>
with RestoreV2Ref {
_RestoreV2ProviderElement(super.provider);
@override
Map<String, dynamic> get backup => (origin as RestoreV2Provider).backup;
Map<String, dynamic> get backup => (origin as RestoreBackupProvider).backup;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package

View file

@ -190,11 +190,7 @@ class SyncServer extends _$SyncServer {
}
void _restore(Map<String, dynamic> backup) {
if (backup['version'] == "1") {
ref.watch(restoreV1Provider(backup));
} else if (backup['version'] == "2") {
ref.watch(restoreV2Provider(backup));
}
ref.read(restoreBackupProvider(backup));
}
String _getAccessToken() {

View file

@ -6,7 +6,7 @@ part of 'myanimelist.dart';
// RiverpodGenerator
// **************************************************************************
String _$myAnimeListHash() => r'607fd673cf3cf2382874b9a413472129043589d5';
String _$myAnimeListHash() => r'824a23f46282baa0562b98c21ef0a5c7e8d80b40';
/// Copied from Dart SDK
class _SystemHash {