59 lines
1.8 KiB
Dart
59 lines
1.8 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:riverpod_annotation/riverpod_annotation.dart';
|
|
part 'get_latest_updates_manga.g.dart';
|
|
|
|
@riverpod
|
|
Future<List<MangaModel?>> getLatestUpdatesManga(
|
|
GetLatestUpdatesMangaRef ref, {
|
|
required Source source,
|
|
required int page,
|
|
}) async {
|
|
List<MangaModel?>? latestUpdatesManga = [];
|
|
final bytecode = compilerEval(source.sourceCode!);
|
|
|
|
final runtime = runtimeEval(bytecode);
|
|
runtime.args = [
|
|
$MangaModel.wrap(MangaModel(
|
|
page: page,
|
|
lang: source.lang,
|
|
baseUrl: source.baseUrl,
|
|
apiUrl: source.apiUrl,
|
|
sourceId: source.id,
|
|
source: source.name,
|
|
dateFormat: source.dateFormat,
|
|
dateFormatLocale: source.dateFormatLocale))
|
|
];
|
|
var result2 = await runtime.executeLib(
|
|
'package:package:mangayomi/main.dart',
|
|
'getLatestUpdatesManga',
|
|
);
|
|
try {
|
|
if (result2 is $MangaModel) {
|
|
final value = result2.$reified;
|
|
List<MangaModel> newManga = [];
|
|
for (var i = 0; i < value.names!.length; i++) {
|
|
MangaModel newMangaa = MangaModel(
|
|
name: value.names![i],
|
|
link: value.urls![i],
|
|
imageUrl: value.images![i],
|
|
baseUrl: value.baseUrl,
|
|
apiUrl: value.apiUrl,
|
|
lang: value.lang,
|
|
sourceId: value.sourceId,
|
|
dateFormat: value.dateFormat,
|
|
dateFormatLocale: value.dateFormatLocale);
|
|
newManga.add(newMangaa);
|
|
}
|
|
latestUpdatesManga = newManga;
|
|
}
|
|
} catch (_) {
|
|
throw Exception("");
|
|
}
|
|
|
|
return latestUpdatesManga;
|
|
}
|