mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-20 23:22:07 +00:00
update d4rt to 0.0.2 & some fixes
This commit is contained in:
parent
206a51df69
commit
f651d460d7
6 changed files with 139 additions and 132 deletions
|
|
@ -19,144 +19,151 @@ Future<dynamic> updateMangaDetail(
|
|||
required bool isInit,
|
||||
bool showToast = true,
|
||||
}) async {
|
||||
final manga = isar.mangas.getSync(mangaId!);
|
||||
if (manga!.chapters.isNotEmpty && isInit) {
|
||||
return;
|
||||
}
|
||||
final source = getSource(manga.lang!, manga.source!);
|
||||
MManga getManga;
|
||||
try {
|
||||
final manga = isar.mangas.getSync(mangaId!);
|
||||
if (manga!.chapters.isNotEmpty && isInit) {
|
||||
return;
|
||||
}
|
||||
final source = getSource(manga.lang!, manga.source!);
|
||||
MManga getManga;
|
||||
|
||||
getManga = await ref.watch(
|
||||
getDetailProvider(url: manga.link!, source: source!).future,
|
||||
);
|
||||
} catch (e) {
|
||||
if (showToast) botToast(e.toString());
|
||||
return;
|
||||
}
|
||||
final genre =
|
||||
getManga.genre
|
||||
?.map((e) => e.toString().trim().trimLeft().trimRight())
|
||||
.toList()
|
||||
.toSet()
|
||||
.toList() ??
|
||||
[];
|
||||
manga
|
||||
..imageUrl = getManga.imageUrl ?? manga.imageUrl
|
||||
..name = getManga.name?.trim().trimLeft().trimRight() ?? manga.name
|
||||
..genre = (genre.isEmpty ? null : genre) ?? manga.genre ?? []
|
||||
..author =
|
||||
getManga.author?.trim().trimLeft().trimRight() ?? manga.author ?? ""
|
||||
..artist =
|
||||
getManga.artist?.trim().trimLeft().trimRight() ?? manga.artist ?? ""
|
||||
..status =
|
||||
getManga.status == Status.unknown
|
||||
? manga.status
|
||||
: getManga.status ?? Status.unknown
|
||||
..description =
|
||||
getManga.description?.trim().trimLeft().trimRight() ??
|
||||
manga.description ??
|
||||
""
|
||||
..link = getManga.link?.trim().trimLeft().trimRight() ?? manga.link
|
||||
..source = manga.source
|
||||
..lang = manga.lang
|
||||
..itemType = source.itemType
|
||||
..lastUpdate = DateTime.now().millisecondsSinceEpoch;
|
||||
final checkManga = isar.mangas.getSync(mangaId);
|
||||
if (checkManga!.chapters.isNotEmpty && isInit) {
|
||||
return;
|
||||
}
|
||||
isar.writeTxnSync(() {
|
||||
isar.mangas.putSync(manga);
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(ActionType.updateItem, manga.id, manga.toJson(), false);
|
||||
manga.lastUpdate = DateTime.now().millisecondsSinceEpoch;
|
||||
|
||||
List<Chapter> chapters = [];
|
||||
|
||||
final chaps = getManga.chapters;
|
||||
if (chaps!.isNotEmpty && chaps.length > manga.chapters.length) {
|
||||
int newChapsIndex = chaps.length - manga.chapters.length;
|
||||
final genre =
|
||||
getManga.genre
|
||||
?.map((e) => e.toString().trim().trimLeft().trimRight())
|
||||
.toList()
|
||||
.toSet()
|
||||
.toList() ??
|
||||
[];
|
||||
manga
|
||||
..imageUrl = getManga.imageUrl ?? manga.imageUrl
|
||||
..name = getManga.name?.trim().trimLeft().trimRight() ?? manga.name
|
||||
..genre = (genre.isEmpty ? null : genre) ?? manga.genre ?? []
|
||||
..author =
|
||||
getManga.author?.trim().trimLeft().trimRight() ?? manga.author ?? ""
|
||||
..artist =
|
||||
getManga.artist?.trim().trimLeft().trimRight() ?? manga.artist ?? ""
|
||||
..status =
|
||||
getManga.status == Status.unknown
|
||||
? manga.status
|
||||
: getManga.status ?? Status.unknown
|
||||
..description =
|
||||
getManga.description?.trim().trimLeft().trimRight() ??
|
||||
manga.description ??
|
||||
""
|
||||
..link = getManga.link?.trim().trimLeft().trimRight() ?? manga.link
|
||||
..source = manga.source
|
||||
..lang = manga.lang
|
||||
..itemType = source.itemType
|
||||
..lastUpdate = DateTime.now().millisecondsSinceEpoch;
|
||||
final checkManga = isar.mangas.getSync(mangaId);
|
||||
if (checkManga!.chapters.isNotEmpty && isInit) {
|
||||
return;
|
||||
}
|
||||
isar.writeTxnSync(() {
|
||||
isar.mangas.putSync(manga);
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.updateItem,
|
||||
manga.id,
|
||||
manga.toJson(),
|
||||
false,
|
||||
);
|
||||
manga.lastUpdate = DateTime.now().millisecondsSinceEpoch;
|
||||
for (var i = 0; i < newChapsIndex; i++) {
|
||||
final chapter = Chapter(
|
||||
name: chaps[i].name!,
|
||||
url: chaps[i].url!.trim().trimLeft().trimRight(),
|
||||
dateUpload:
|
||||
chaps[i].dateUpload == null
|
||||
? DateTime.now().millisecondsSinceEpoch.toString()
|
||||
: chaps[i].dateUpload.toString(),
|
||||
scanlator: chaps[i].scanlator ?? '',
|
||||
mangaId: mangaId,
|
||||
)..manga.value = manga;
|
||||
chapters.add(chapter);
|
||||
}
|
||||
}
|
||||
if (chapters.isNotEmpty) {
|
||||
for (var chap in chapters.reversed.toList()) {
|
||||
isar.chapters.putSync(chap);
|
||||
chap.manga.saveSync();
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.addChapter,
|
||||
chap.id,
|
||||
chap.toJson(),
|
||||
false,
|
||||
);
|
||||
if (manga.chapters.isNotEmpty) {
|
||||
final update = Update(
|
||||
|
||||
List<Chapter> chapters = [];
|
||||
|
||||
final chaps = getManga.chapters;
|
||||
if (chaps!.isNotEmpty && chaps.length > manga.chapters.length) {
|
||||
int newChapsIndex = chaps.length - manga.chapters.length;
|
||||
manga.lastUpdate = DateTime.now().millisecondsSinceEpoch;
|
||||
for (var i = 0; i < newChapsIndex; i++) {
|
||||
final chapter = Chapter(
|
||||
name: chaps[i].name!,
|
||||
url: chaps[i].url!.trim().trimLeft().trimRight(),
|
||||
dateUpload:
|
||||
chaps[i].dateUpload == null
|
||||
? DateTime.now().millisecondsSinceEpoch.toString()
|
||||
: chaps[i].dateUpload.toString(),
|
||||
scanlator: chaps[i].scanlator ?? '',
|
||||
mangaId: mangaId,
|
||||
chapterName: chap.name,
|
||||
date: DateTime.now().millisecondsSinceEpoch.toString(),
|
||||
)..chapter.value = chap;
|
||||
isar.updates.putSync(update);
|
||||
update.chapter.saveSync();
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.addUpdate,
|
||||
update.id,
|
||||
update.toJson(),
|
||||
false,
|
||||
);
|
||||
)..manga.value = manga;
|
||||
chapters.add(chapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
final oldChapers =
|
||||
isar.mangas.getSync(mangaId)!.chapters.toList().reversed.toList();
|
||||
if (oldChapers.length == chaps.length) {
|
||||
for (var i = 0; i < oldChapers.length; i++) {
|
||||
final oldChap = oldChapers[i];
|
||||
final newChap = chaps[i];
|
||||
final hasChanged =
|
||||
oldChap.name != newChap.name ||
|
||||
oldChap.url != newChap.url ||
|
||||
oldChap.scanlator != newChap.scanlator;
|
||||
oldChap.name = newChap.name;
|
||||
oldChap.url = newChap.url;
|
||||
oldChap.scanlator = newChap.scanlator;
|
||||
isar.chapters.putSync(oldChap);
|
||||
oldChap.manga.saveSync();
|
||||
if (hasChanged) {
|
||||
if (chapters.isNotEmpty) {
|
||||
for (var chap in chapters.reversed.toList()) {
|
||||
isar.chapters.putSync(chap);
|
||||
chap.manga.saveSync();
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.updateItem,
|
||||
manga.id,
|
||||
manga.toJson(),
|
||||
false,
|
||||
);
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.updateChapter,
|
||||
oldChap.id,
|
||||
oldChap.toJson(),
|
||||
ActionType.addChapter,
|
||||
chap.id,
|
||||
chap.toJson(),
|
||||
false,
|
||||
);
|
||||
if (manga.chapters.isNotEmpty) {
|
||||
final update = Update(
|
||||
mangaId: mangaId,
|
||||
chapterName: chap.name,
|
||||
date: DateTime.now().millisecondsSinceEpoch.toString(),
|
||||
)..chapter.value = chap;
|
||||
isar.updates.putSync(update);
|
||||
update.chapter.saveSync();
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.addUpdate,
|
||||
update.id,
|
||||
update.toJson(),
|
||||
false,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
final oldChapers =
|
||||
isar.mangas.getSync(mangaId)!.chapters.toList().reversed.toList();
|
||||
if (oldChapers.length == chaps.length) {
|
||||
for (var i = 0; i < oldChapers.length; i++) {
|
||||
final oldChap = oldChapers[i];
|
||||
final newChap = chaps[i];
|
||||
final hasChanged =
|
||||
oldChap.name != newChap.name ||
|
||||
oldChap.url != newChap.url ||
|
||||
oldChap.scanlator != newChap.scanlator;
|
||||
oldChap.name = newChap.name;
|
||||
oldChap.url = newChap.url;
|
||||
oldChap.scanlator = newChap.scanlator;
|
||||
isar.chapters.putSync(oldChap);
|
||||
oldChap.manga.saveSync();
|
||||
if (hasChanged) {
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.updateItem,
|
||||
manga.id,
|
||||
manga.toJson(),
|
||||
false,
|
||||
);
|
||||
ref
|
||||
.read(synchingProvider(syncId: 1).notifier)
|
||||
.addChangedPart(
|
||||
ActionType.updateChapter,
|
||||
oldChap.id,
|
||||
oldChap.toJson(),
|
||||
false,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (e, s) {
|
||||
if (showToast) botToast('$e\n$s');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,8 +59,8 @@ void doRestore(Ref ref, {required String path, required BuildContext context}) {
|
|||
} else {
|
||||
showBotToast("Backup Type not supported!");
|
||||
}
|
||||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
} catch (e, s) {
|
||||
botToast('$e\n$s');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -303,8 +303,8 @@ class _SourceRepositoriesState extends ConsumerState<SourceRepositories> {
|
|||
widget.itemType,
|
||||
),
|
||||
);
|
||||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
} catch (e, s) {
|
||||
botToast('$e\n$s');
|
||||
}
|
||||
|
||||
if (context.mounted) {
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ class _UpdatesScreenState extends ConsumerState<UpdatesScreen>
|
|||
failed++;
|
||||
}
|
||||
numbers++;
|
||||
if (context.mounted) {
|
||||
if (mounted) {
|
||||
botToast(
|
||||
context.l10n.updating_library(numbers, failed, mangaList.length),
|
||||
fontSize: 13,
|
||||
|
|
|
|||
|
|
@ -354,10 +354,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: d4rt
|
||||
sha256: c59d4546fe58a76250dda4cd7db9ec5bb2eb633f47f5104a1f60de72b111639e
|
||||
sha256: ceaeb41ec6d1a208b553deb19cf6a1dc7a588d41dae9652953920d0636c2e9c0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.1"
|
||||
version: "0.0.2"
|
||||
dart_style:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ dependencies:
|
|||
marquee: ^2.2.3
|
||||
epubx:
|
||||
path: ./epubx
|
||||
d4rt: ^0.0.1
|
||||
d4rt: ^0.0.2
|
||||
|
||||
dependency_overrides:
|
||||
ffi: ^2.1.3
|
||||
|
|
|
|||
Loading…
Reference in a new issue