mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-05-18 11:01:53 +00:00
39 lines
1.1 KiB
Dart
39 lines
1.1 KiB
Dart
import 'dart:async';
|
|
import 'package:mangayomi/eval/compiler/compiler.dart';
|
|
import 'package:mangayomi/models/source.dart';
|
|
import 'package:mangayomi/eval/bridge_class/manga_model.dart';
|
|
import 'package:mangayomi/eval/bridge_class/model.dart';
|
|
import 'package:mangayomi/eval/runtime/runtime.dart';
|
|
import 'package:mangayomi/sources/source_test.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
part 'get_manga_detail.g.dart';
|
|
|
|
@riverpod
|
|
Future<MangaModel> getMangaDetail(
|
|
GetMangaDetailRef ref, {
|
|
required MangaModel manga,
|
|
required Source source,
|
|
}) async {
|
|
MangaModel? mangadetail;
|
|
final bytecode =
|
|
compilerEval(useTestSourceCode ? testSourceCode : source.sourceCode!);
|
|
|
|
final runtime = runtimeEval(bytecode);
|
|
runtime.args = [
|
|
$MangaModel.wrap(manga
|
|
..source = source.name
|
|
..lang = source.lang)
|
|
];
|
|
|
|
var result = await runtime.executeLib('package:mangayomi/source_code.dart',
|
|
source.isManga! ? 'getMangaDetail' : 'getAnimeDetail');
|
|
try {
|
|
if (result is $MangaModel) {
|
|
final value = result.$reified;
|
|
mangadetail = value;
|
|
}
|
|
} catch (_) {
|
|
return manga;
|
|
}
|
|
return mangadetail!;
|
|
}
|