mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-21 11:51:57 +00:00
WIP
This commit is contained in:
parent
9569a261bd
commit
3f206eb78e
31 changed files with 1415 additions and 1766 deletions
File diff suppressed because it is too large
Load diff
997
lib/eval/bridge/m_provider.dart
Normal file
997
lib/eval/bridge/m_provider.dart
Normal file
|
|
@ -0,0 +1,997 @@
|
|||
import 'dart:convert';
|
||||
import 'package:dart_eval/dart_eval.dart';
|
||||
import 'package:dart_eval/dart_eval_bridge.dart';
|
||||
import 'package:dart_eval/stdlib/core.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_source.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_manga.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_pages.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_status.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_track.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_video.dart';
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/eval/model/m_source.dart';
|
||||
import 'package:mangayomi/eval/model/m_manga.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/models/video.dart';
|
||||
|
||||
class $MProvider extends MProvider with $Bridge<MProvider> {
|
||||
static $MProvider $construct(
|
||||
Runtime runtime, $Value? target, List<$Value?> args) =>
|
||||
$MProvider();
|
||||
|
||||
static const $type = BridgeTypeRef(
|
||||
BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MProvider'));
|
||||
|
||||
static const $declaration = BridgeClassDef(
|
||||
BridgeClassType($type, isAbstract: true),
|
||||
constructors: {
|
||||
'': BridgeConstructorDef(
|
||||
BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))
|
||||
},
|
||||
methods: {
|
||||
'getLatestUpdates': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MSource.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'page',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getPopular': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MSource.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'page',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'search': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MSource.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'query',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'page',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getDetail': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MManga.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MManga.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getPageList': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MManga.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getVideoList': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MManga.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'cryptoHandler': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'text',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'iv',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'secretKeyString',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter('encrypt',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), false),
|
||||
]),
|
||||
),
|
||||
'encryptAESCryptoJS': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'plainText',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'passphrase',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'decryptAESCryptoJS': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'encrypted',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'passphrase',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'deobfuscateJsPassword': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'inputString',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'sibnetExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'myTvExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'okruExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'voeExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'quality',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
true),
|
||||
]),
|
||||
),
|
||||
'vidBomExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'streamlareExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'prefix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'suffix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'rapidCloudExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'prefix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'sendVidExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'headers',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'prefix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'yourUploadExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'headers',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'name',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'prefix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'substringAfter': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'text',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'pattern',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'substringBefore': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'text',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'pattern',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'substringBeforeLast': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'text',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'pattern',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'substringAfterLast': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'text',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'pattern',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'toVideo': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.dynamic)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'quality',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'originalUrl',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'headers',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
true),
|
||||
BridgeParameter(
|
||||
'subtitles',
|
||||
BridgeTypeAnnotation(
|
||||
BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]),
|
||||
nullable: true),
|
||||
true),
|
||||
BridgeParameter(
|
||||
'audios',
|
||||
BridgeTypeAnnotation(
|
||||
BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)]),
|
||||
nullable: true),
|
||||
true),
|
||||
]),
|
||||
),
|
||||
'jsonPathToString': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'source',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'expression',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'join',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'getMapValue': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'source',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'attr',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
],
|
||||
namedParams: [
|
||||
BridgeParameter(
|
||||
'encode',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool),
|
||||
nullable: true),
|
||||
true),
|
||||
]),
|
||||
),
|
||||
'jsonPathToList': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'source',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'expression',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter('type',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
|
||||
]),
|
||||
),
|
||||
'parseStatus': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation($MStatus.$type),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'status',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'statusList',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)])),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'parseDates': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'value',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)])),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'dateFormat',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'dateFormatLocale',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'querySelector': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'html',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'selector',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter('typeElement',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
|
||||
BridgeParameter(
|
||||
'attributes',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'querySelectorAll': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'html',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
],
|
||||
namedParams: [
|
||||
BridgeParameter(
|
||||
'selector',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter('typeElement',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
|
||||
BridgeParameter(
|
||||
'attributes',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter('typeRegExp',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
|
||||
]),
|
||||
),
|
||||
'xpath': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'html',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'xpath',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'http': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.future, [BridgeTypeRef(CoreTypes.string)])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'method',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'datas',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'gogoCdnExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'doodExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'quality',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
true),
|
||||
]),
|
||||
),
|
||||
'streamTapeExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'quality',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
true),
|
||||
]),
|
||||
),
|
||||
'mp4UploadExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'headers',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'prefix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'suffix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'streamWishExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'prefix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'filemoonExtractor': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'prefix',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string),
|
||||
nullable: true),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'getHtmlViaWebview': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.future, [BridgeTypeRef(CoreTypes.string)])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'rule',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'evalJs': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'code',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
]),
|
||||
),
|
||||
'regExp': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'expression',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'source',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'replace',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter('type',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
|
||||
BridgeParameter('group',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
|
||||
]),
|
||||
),
|
||||
'sortMapList': BridgeMethodDef(
|
||||
BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'list',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(
|
||||
CoreTypes.list, [BridgeTypeRef(CoreTypes.dynamic)])),
|
||||
false),
|
||||
BridgeParameter(
|
||||
'value',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false),
|
||||
BridgeParameter('type',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), false),
|
||||
]),
|
||||
),
|
||||
},
|
||||
bridge: true);
|
||||
|
||||
static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) {
|
||||
return $MProvider();
|
||||
}
|
||||
|
||||
@override
|
||||
$Value? $bridgeGet(String identifier) {
|
||||
return switch (identifier) {
|
||||
'http' => $Function((_, __, List<$Value?> args) {
|
||||
return $Future.wrap(MBridge.http(args[0]!.$reified, args[1]!.$reified)
|
||||
.then((value) => $String(value)));
|
||||
}),
|
||||
"cryptoHandler" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(MBridge.cryptoHandler(args[0]!.$value, args[1]!.$value,
|
||||
args[2]!.$value, args[3]!.$value));
|
||||
}),
|
||||
"encryptAESCryptoJS" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(
|
||||
MBridge.encryptAESCryptoJS(args[0]!.$value, args[1]!.$value));
|
||||
}),
|
||||
"decryptAESCryptoJS" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(
|
||||
MBridge.decryptAESCryptoJS(args[0]!.$value, args[1]!.$value));
|
||||
}),
|
||||
"deobfuscateJsPassword" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(MBridge.deobfuscateJsPassword(args[0]!.$value));
|
||||
}),
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
"substringAfter" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(
|
||||
MBridge.substringAfter(args[0]!.$value, args[1]!.$value));
|
||||
}),
|
||||
"substringBefore" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(
|
||||
MBridge.substringBefore(args[0]!.$value, args[1]!.$value));
|
||||
}),
|
||||
"substringBeforeLast" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(
|
||||
MBridge.substringBefore(args[0]!.$value, args[1]!.$value));
|
||||
}),
|
||||
"substringAfterLast" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(
|
||||
MBridge.substringAfterLast(args[0]!.$value, args[1]!.$value));
|
||||
}),
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
"sibnetExtractor" => $Function((_, __, List<$Value?> args) =>
|
||||
$Future.wrap(MBridge.sibnetExtractor(args[0]!.$value).then(
|
||||
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"myTvExtractor" => $Function((_, __, List<$Value?> args) => $Future.wrap(
|
||||
MBridge.myTvExtractor(args[0]!.$value).then(
|
||||
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"okruExtractor" => $Function((_, __, List<$Value?> args) => $Future.wrap(
|
||||
MBridge.okruExtractor(args[0]!.$value).then(
|
||||
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"voeExtractor" => $Function((_, __, List<$Value?> args) => $Future.wrap(
|
||||
MBridge.voeExtractor(args[0]!.$value, args[1]?.$value).then(
|
||||
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"vidBomExtractor" => $Function((_, __, List<$Value?> args) =>
|
||||
$Future.wrap(MBridge.vidBomExtractor(args[0]!.$value).then(
|
||||
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"streamlareExtractor" => $Function((_, __, List<$Value?> args) =>
|
||||
$Future.wrap(MBridge.streamlareExtractor(
|
||||
args[0]!.$value, args[1]?.$value, args[2]?.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"rapidCloudExtractor" => $Function((_, __, List<$Value?> args) => $Future
|
||||
.wrap(MBridge.rapidCloudExtractor(args[0]!.$value, args[1]?.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"sendVidExtractor" => $Function((_, __, List<$Value?> args) =>
|
||||
$Future.wrap(MBridge.sendVidExtractor(
|
||||
args[0]!.$value, args[1]?.$value, args[2]?.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"yourUploadExtractor" => $Function((_, __, List<$Value?> args) =>
|
||||
$Future.wrap(MBridge.yourUploadExtractor(args[0]!.$value,
|
||||
args[1]?.$value, args[2]?.$value, args[3]?.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"gogoCdnExtractor" => $Function((_, __, List<$Value?> args) =>
|
||||
$Future.wrap(MBridge.gogoCdnExtractor(args[0]!.$value).then(
|
||||
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"doodExtractor" => $Function((_, __, List<$Value?> args) => $Future.wrap(
|
||||
MBridge.doodExtractor(args[0]!.$value, args[1]?.$value).then(
|
||||
(value) => $List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"streamTapeExtractor" => $Function((_, __, List<$Value?> args) => $Future
|
||||
.wrap(MBridge.streamTapeExtractor(args[0]!.$value, args[1]!.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"mp4UploadExtractor" => $Function((_, __, List<$Value?> args) =>
|
||||
$Future.wrap(MBridge.mp4UploadExtractor(args[0]!.$value,
|
||||
args[1]!.$value, args[2]!.$value, args[3]!.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"streamWishExtractor" => $Function((_, __, List<$Value?> args) => $Future
|
||||
.wrap(MBridge.streamWishExtractor(args[0]!.$value, args[1]!.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"filemoonExtractor" => $Function((_, __, List<$Value?> args) => $Future
|
||||
.wrap(MBridge.filemoonExtractor(args[0]!.$value, args[1]?.$value)
|
||||
.then((value) =>
|
||||
$List.wrap(value.map((e) => _toMVideo(e)).toList())))),
|
||||
"toVideo" => $Function((_, __, List<$Value?> args) {
|
||||
final value = MBridge.toVideo(
|
||||
args[0]!.$value,
|
||||
args[1]!.$value,
|
||||
args[2]!.$value,
|
||||
args[3]?.$value,
|
||||
args[4]?.$value,
|
||||
args[5]?.$value);
|
||||
return _toMVideo(value);
|
||||
}),
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
"getHtmlViaWebview" => $Function((_, __, List<$Value?> args) {
|
||||
return $Future.wrap(
|
||||
MBridge.getHtmlViaWebview(args[0]!.$value, args[1]!.$value)
|
||||
.then((value) => $String(value)));
|
||||
}),
|
||||
"evalJs" => MBridge.evalJs,
|
||||
"regExp" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(MBridge.regExp(args[0]!.$value, args[1]!.$value,
|
||||
args[2]!.$value, args[3]!.$value, args[4]!.$value));
|
||||
}),
|
||||
"jsonPathToString" => MBridge.jsonPathToString,
|
||||
"jsonPathToList" => MBridge.jsonPathToList,
|
||||
"sortMapList" => $Function((_, __, List<$Value?> args) {
|
||||
List list = args[0]!.$value;
|
||||
if (list is $List) {
|
||||
list = list.$reified;
|
||||
}
|
||||
list = list.map((e) {
|
||||
if (e is $Map<$Value?, $Value?>) {
|
||||
return e.$reified;
|
||||
}
|
||||
return e;
|
||||
}).toList();
|
||||
return $String(jsonEncode(
|
||||
MBridge.sortMapList(list, args[1]!.$value, args[2]!.$value)));
|
||||
}),
|
||||
"getMapValue" => $Function((_, __, List<$Value?> args) {
|
||||
return $String(MBridge.getMapValue(
|
||||
args[0]!.$value,
|
||||
args[1]!.$value,
|
||||
args[2]?.$value ?? false,
|
||||
));
|
||||
}),
|
||||
"parseStatus" => $Function((_, __, List<$Value?> args) {
|
||||
List<dynamic> argss2 = [];
|
||||
if (args[1]!.$value is List<$Value>) {
|
||||
argss2 = args[1]!.$value as List<$Value>;
|
||||
} else {
|
||||
argss2 = args[1]!.$value as List<dynamic>;
|
||||
}
|
||||
return $MStatus.wrap(MBridge.parseStatus(args[0]!.$value, argss2));
|
||||
}),
|
||||
"parseDates" => $Function((_, __, List<$Value?> args) {
|
||||
return $List.wrap(MBridge.parseDates(
|
||||
args[0]!.$value, args[1]!.$value, args[2]!.$value)
|
||||
.map((e) => $String(e))
|
||||
.toList());
|
||||
}),
|
||||
"querySelector" => MBridge.querySelector,
|
||||
"querySelectorAll" => MBridge.querySelectorAll,
|
||||
"xpath" => MBridge.xpath,
|
||||
_ => $Function((_, __, List<$Value?> args) {
|
||||
throw UnimplementedError('Unknown property $identifier');
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
void $bridgeSet(String identifier, $Value value) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MManga> getDetail(MSource sourceInfo, String url) async =>
|
||||
await $_invoke('getDetail', [$MSource.wrap(sourceInfo), $String(url)]);
|
||||
|
||||
@override
|
||||
Future<MPages> getLatestUpdates(MSource sourceInfo, int page) async =>
|
||||
await $_invoke(
|
||||
'getLatestUpdates', [$MSource.wrap(sourceInfo), $int(page)]);
|
||||
|
||||
@override
|
||||
Future<MPages> getPopular(MSource sourceInfo, int page) async =>
|
||||
await $_invoke('getPopular', [$MSource.wrap(sourceInfo), $int(page)]);
|
||||
|
||||
@override
|
||||
Future<MPages> search(MSource sourceInfo, String query, int page) async =>
|
||||
await $_invoke(
|
||||
'search', [$MSource.wrap(sourceInfo), $String(query), $int(page)]);
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource sourceInfo, String url) async {
|
||||
final res = await $_invoke(
|
||||
'getPageList', [$MSource.wrap(sourceInfo), $String(url)]);
|
||||
if (res is $List) {
|
||||
return res.$reified.map((e) => e as String).toList();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Video>> getVideoList(MSource sourceInfo, String url) async {
|
||||
final res = await $_invoke(
|
||||
'getVideoList', [$MSource.wrap(sourceInfo), $String(url)]);
|
||||
if (res is $List) {
|
||||
return res.$reified.map((e) => e as Video).toList();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
$MVideo _toMVideo(Video e) =>
|
||||
$MVideo.wrap(Video(e.url, e.quality, e.originalUrl)
|
||||
..headers = e.headers
|
||||
..subtitles = $List.wrap(e.subtitles == null
|
||||
? []
|
||||
: e.subtitles!
|
||||
.map((t) => $MTrack.wrap(Track(file: t.file, label: t.label)))
|
||||
.toList())
|
||||
..audios = $List.wrap(e.audios == null
|
||||
? []
|
||||
: e.audios!
|
||||
.map((t) => $MTrack.wrap(Track(file: t.file, label: t.label)))
|
||||
.toList()));
|
||||
}
|
||||
|
|
@ -1,182 +0,0 @@
|
|||
import 'package:dart_eval/dart_eval.dart';
|
||||
import 'package:dart_eval/dart_eval_bridge.dart';
|
||||
import 'package:dart_eval/stdlib/core.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_source.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_manga.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_pages.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_video.dart';
|
||||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/eval/model/m_source.dart';
|
||||
import 'package:mangayomi/eval/model/m_manga.dart';
|
||||
import 'package:mangayomi/eval/model/source_provider.dart';
|
||||
import 'package:mangayomi/models/video.dart';
|
||||
|
||||
class $MSourceProvider
|
||||
with $Bridge<MSourceProvider>
|
||||
implements MSourceProvider {
|
||||
static $MSourceProvider $construct(
|
||||
Runtime runtime, $Value? target, List<$Value?> args) =>
|
||||
$MSourceProvider();
|
||||
|
||||
static const $type = BridgeTypeRef(
|
||||
BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'MSourceProvider'));
|
||||
|
||||
static const $declaration = BridgeClassDef(
|
||||
BridgeClassType($type, isAbstract: true),
|
||||
constructors: {
|
||||
'': BridgeConstructorDef(
|
||||
BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))
|
||||
},
|
||||
methods: {
|
||||
'getLatestUpdates': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MSource.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'page',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getPopular': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MSource.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'page',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'search': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MPages.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MSource.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'query',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'page',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getDetail': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(
|
||||
BridgeTypeRef(CoreTypes.future, [$MManga.$type])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MManga.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getPageList': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.string)])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MManga.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
'getVideoList': BridgeMethodDef(BridgeFunctionDef(
|
||||
returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [
|
||||
BridgeTypeRef(CoreTypes.list, [$MVideo.$type])
|
||||
])),
|
||||
params: [
|
||||
BridgeParameter(
|
||||
'sourceInfo',
|
||||
BridgeTypeAnnotation($MManga.$type),
|
||||
false,
|
||||
),
|
||||
BridgeParameter(
|
||||
'url',
|
||||
BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)),
|
||||
false,
|
||||
),
|
||||
])),
|
||||
},
|
||||
bridge: true);
|
||||
|
||||
static $Value? $new(Runtime runtime, $Value? target, List<$Value?> args) {
|
||||
return $MSourceProvider();
|
||||
}
|
||||
|
||||
@override
|
||||
$Value? $bridgeGet(String identifier) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
void $bridgeSet(String identifier, $Value value) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<MManga> getDetail(MSource sourceInfo, String url) async =>
|
||||
await $_invoke('getDetail', [$MSource.wrap(sourceInfo), $String(url)]);
|
||||
|
||||
@override
|
||||
Future<MPages> getLatestUpdates(MSource sourceInfo, int page) async =>
|
||||
await $_invoke(
|
||||
'getLatestUpdates', [$MSource.wrap(sourceInfo), $int(page)]);
|
||||
|
||||
@override
|
||||
Future<MPages> getPopular(MSource sourceInfo, int page) async =>
|
||||
await $_invoke('getPopular', [$MSource.wrap(sourceInfo), $int(page)]);
|
||||
|
||||
@override
|
||||
Future<MPages> search(MSource sourceInfo, String query, int page) async =>
|
||||
await $_invoke(
|
||||
'search', [$MSource.wrap(sourceInfo), $String(query), $int(page)]);
|
||||
|
||||
@override
|
||||
Future<List<String>> getPageList(MSource sourceInfo, String url) async {
|
||||
final res = await $_invoke(
|
||||
'getPageList', [$MSource.wrap(sourceInfo), $String(url)]);
|
||||
if (res is $List) {
|
||||
return res.$reified.map((e) => e as String).toList();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Video>> getVideoList(MSource sourceInfo, String url) async {
|
||||
final res = await $_invoke(
|
||||
'getVideoList', [$MSource.wrap(sourceInfo), $String(url)]);
|
||||
if (res is $List) {
|
||||
return res.$reified.map((e) => e as Video).toList();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,31 +1,13 @@
|
|||
import 'dart:typed_data';
|
||||
import 'package:dart_eval/dart_eval.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_bridge.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_chapter.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_manga.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_pages.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_source.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_status.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_track.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_video.dart';
|
||||
import 'package:mangayomi/eval/bridge/source_provider.dart';
|
||||
import 'package:mangayomi/eval/utils.dart';
|
||||
import 'package:mangayomi/eval/plugin.dart';
|
||||
|
||||
Uint8List compilerEval(String code) {
|
||||
late Compiler compiler = Compiler();
|
||||
compiler.defineBridgeClasses([
|
||||
$MBridge.$declaration,
|
||||
$MSourceProvider.$declaration,
|
||||
$MPages.$declaration,
|
||||
$MSource.$declaration,
|
||||
$MVideo.$declaration,
|
||||
$MTrack.$declaration,
|
||||
$MChapter.$declaration,
|
||||
$MManga.$declaration,
|
||||
]);
|
||||
compiler.defineBridgeEnum($MStatus.$declaration);
|
||||
final plugin = MEvalPlugin();
|
||||
compiler.addPlugin(plugin);
|
||||
final program = compiler.compile({
|
||||
'mangayomi': {'main.dart': code, 'utils.dart': utils}
|
||||
'mangayomi': {'main.dart': code}
|
||||
});
|
||||
|
||||
final bytecode = program.write();
|
||||
|
|
|
|||
|
|
@ -65,27 +65,25 @@ class WordSet {
|
|||
|
||||
class MBridge {
|
||||
///Seaches for the first descendant node matching the given selectors, using a preorder traversal.
|
||||
static String querySelector(
|
||||
String html,
|
||||
String selector,
|
||||
int typeElement,
|
||||
String attributes,
|
||||
) {
|
||||
static const $Function querySelector = $Function(_querySelector);
|
||||
|
||||
static $Value? _querySelector(_, __, List<$Value?> args) {
|
||||
String html = args[0]!.$reified;
|
||||
String selector = args[0]!.$reified;
|
||||
int typeElement = args[0]!.$reified;
|
||||
String attributes = args[0]!.$reified;
|
||||
|
||||
String res = "";
|
||||
try {
|
||||
var parse = parser.parse(html);
|
||||
|
||||
// return querySelector text
|
||||
if (typeElement == 0) {
|
||||
return parse
|
||||
.querySelector(selector)!
|
||||
.text
|
||||
.trim()
|
||||
.trimLeft()
|
||||
.trimRight();
|
||||
res = parse.querySelector(selector)!.text.trim().trimLeft().trimRight();
|
||||
|
||||
// return querySelector innerHtml
|
||||
} else if (typeElement == 1) {
|
||||
return parse
|
||||
res = parse
|
||||
.querySelector(selector)!
|
||||
.innerHtml
|
||||
.trim()
|
||||
|
|
@ -94,7 +92,7 @@ class MBridge {
|
|||
|
||||
// return querySelector outerHtml
|
||||
} else if (typeElement == 2) {
|
||||
return parse
|
||||
res = parse
|
||||
.querySelector(selector)!
|
||||
.outerHtml
|
||||
.trim()
|
||||
|
|
@ -102,21 +100,27 @@ class MBridge {
|
|||
.trimRight();
|
||||
}
|
||||
// return querySelector attributes
|
||||
return parse
|
||||
res = parse
|
||||
.querySelector(selector)!
|
||||
.attributes[attributes]!
|
||||
.trim()
|
||||
.trimLeft()
|
||||
.trimRight();
|
||||
return $String(res);
|
||||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
throw Exception(e);
|
||||
}
|
||||
}
|
||||
|
||||
///Returns all descendant nodes matching the given selectors, using a preorder traversal.
|
||||
static List<String> querySelectorAll(String html, String selector,
|
||||
int typeElement, String attributes, int typeRegExp) {
|
||||
static const $Function querySelectorAll = $Function(_querySelectorAll);
|
||||
|
||||
static $Value? _querySelectorAll(_, __, List<$Value?> args) {
|
||||
String html = args[0]!.$value;
|
||||
String selector = args[1]!.$value;
|
||||
int typeElement = args[2]!.$value;
|
||||
String attributes = args[3]!.$value;
|
||||
int typeRegExp = args[4]!.$value;
|
||||
try {
|
||||
var parse = parser.parse(html);
|
||||
final a = parse.querySelectorAll(selector);
|
||||
|
|
@ -146,7 +150,7 @@ class MBridge {
|
|||
}
|
||||
// if (typeRegExp == 0) is the default parameter
|
||||
if (typeRegExp == 0) {
|
||||
return res;
|
||||
return $List.wrap(res.map((e) => $String(e)).toList());
|
||||
}
|
||||
|
||||
List<String> resRegExp = [];
|
||||
|
|
@ -172,7 +176,7 @@ class MBridge {
|
|||
resRegExp.add(regImgMatcher(element.trim().trimLeft().trimRight()));
|
||||
}
|
||||
}
|
||||
return resRegExp;
|
||||
return $List.wrap(resRegExp.map((e) => $String(e)).toList());
|
||||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
throw Exception(e);
|
||||
|
|
@ -180,7 +184,11 @@ class MBridge {
|
|||
}
|
||||
|
||||
///Create query by html string
|
||||
static List<String> xpath(String html, String xpath) {
|
||||
static const $Function xpath = $Function(_xpath);
|
||||
|
||||
static $Value? _xpath(_, __, List<$Value?> args) {
|
||||
String html = args[0]!.$reified;
|
||||
String xpath = args[1]!.$reified;
|
||||
List<String> attrs = [];
|
||||
try {
|
||||
var htmlXPath = HtmlXPath.html(html);
|
||||
|
|
@ -199,10 +207,9 @@ class MBridge {
|
|||
attrs = [attr];
|
||||
}
|
||||
}
|
||||
return attrs;
|
||||
return $List.wrap(attrs.map((e) => $String(e)).toList());
|
||||
} catch (e) {
|
||||
// botToast(e.toString());
|
||||
return attrs;
|
||||
throw e.toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -305,32 +312,26 @@ class MBridge {
|
|||
return html!;
|
||||
}
|
||||
|
||||
///Utility to decode json to List
|
||||
static List<dynamic> jsonDecodeToList(String source, int type) {
|
||||
return type == 0
|
||||
? jsonDecode(source) as List
|
||||
: (jsonDecode(source) as List).map((e) => jsonEncode(e)).toList();
|
||||
}
|
||||
|
||||
///Deobfuscate a JS code
|
||||
static String evalJs(String code) {
|
||||
static const $Function evalJs = $Function(_evalJs);
|
||||
|
||||
static $Value? _evalJs(_, __, List<$Value?> args) {
|
||||
String code = args[0]!.$reified;
|
||||
try {
|
||||
// JavascriptRuntime? flutterJs;
|
||||
// flutterJs = getJavascriptRuntime();
|
||||
// final res = flutterJs.evaluate(code).stringResult;
|
||||
// flutterJs.dispose();
|
||||
// return res;
|
||||
final jsPacker = JSPacker(code);
|
||||
return jsPacker.unpack() ?? "";
|
||||
return $String(jsPacker.unpack() ?? "");
|
||||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
throw Exception(e);
|
||||
}
|
||||
}
|
||||
|
||||
///Read values in parsed JSON object and return resut to List<String>
|
||||
static List<String> jsonPathToList(
|
||||
String source, String expression, int type) {
|
||||
static const $Function jsonPathToList = $Function(_jsonPathToList);
|
||||
|
||||
static $Value? _jsonPathToList(_, __, List<$Value?> args) {
|
||||
String source = args[0]!.$reified;
|
||||
String expression = args[1]!.$reified;
|
||||
int type = args[2]!.$reified;
|
||||
try {
|
||||
//Check jsonDecode(source) is list value
|
||||
if (jsonDecode(source) is List) {
|
||||
|
|
@ -360,19 +361,18 @@ class MBridge {
|
|||
}
|
||||
list.add(val);
|
||||
}
|
||||
return list;
|
||||
return $List.wrap(list.map((e) => $String(e)).toList());
|
||||
}
|
||||
|
||||
// else jsonDecode(source) is Map value
|
||||
else {
|
||||
var map = json.decode(source);
|
||||
var values = JsonPath(expression).readValues(map);
|
||||
return values.map((e) {
|
||||
return e == null ? "{}" : json.encode(e);
|
||||
}).toList();
|
||||
return $List.wrap(values.map((e) {
|
||||
return $String(e == null ? "{}" : json.encode(e));
|
||||
}).toList());
|
||||
}
|
||||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
throw Exception(e);
|
||||
}
|
||||
}
|
||||
|
|
@ -391,8 +391,12 @@ class MBridge {
|
|||
}
|
||||
|
||||
///Read values in parsed JSON object and return resut to String
|
||||
static String jsonPathToString(
|
||||
String source, String expression, String join) {
|
||||
static const $Function jsonPathToString = $Function(_jsonPathToString);
|
||||
|
||||
static $Value? _jsonPathToString(_, __, List<$Value?> args) {
|
||||
String source = args[0]!.$reified;
|
||||
String expression = args[1]!.$reified;
|
||||
String join = args[2]!.$reified;
|
||||
try {
|
||||
List<dynamic> values = [];
|
||||
|
||||
|
|
@ -431,23 +435,12 @@ class MBridge {
|
|||
//join the list into listRg
|
||||
listRg.add(list.join(join));
|
||||
}
|
||||
return listRg.first;
|
||||
return $String(listRg.first);
|
||||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
throw Exception(e);
|
||||
}
|
||||
}
|
||||
|
||||
//Utility to decode json values as Map<String,dynamic>
|
||||
static Map jsonPathToMap(String source) {
|
||||
final mMap = jsonDecode(source) as Map?;
|
||||
Map<String, dynamic> map = {};
|
||||
if (mMap != null) {
|
||||
map = mMap.map((key, value) => MapEntry(key.toString(), value));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
//Parse a list of dates to millisecondsSinceEpoch
|
||||
static List parseDates(
|
||||
List value, String dateFormat, String dateFormatLocale) {
|
||||
|
|
@ -494,6 +487,7 @@ class MBridge {
|
|||
}
|
||||
|
||||
//http request and also webview
|
||||
|
||||
static Future<String> http(String method, String datas) async {
|
||||
try {
|
||||
hp.StreamedResponse? res;
|
||||
|
|
@ -558,13 +552,12 @@ class MBridge {
|
|||
} catch (e) {
|
||||
botToast(e.toString());
|
||||
return "";
|
||||
// throw e.toString();
|
||||
}
|
||||
}
|
||||
|
||||
static Future<List<Video>> gogoCdnExtractor(String url) async {
|
||||
return await GogoCdnExtractor().videosFromUrl(
|
||||
url,
|
||||
);
|
||||
return await GogoCdnExtractor().videosFromUrl(url);
|
||||
}
|
||||
|
||||
static Future<List<Video>> doodExtractor(String url, String? quality) async {
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ import 'package:mangayomi/eval/model/m_source.dart';
|
|||
import 'package:mangayomi/eval/model/m_manga.dart';
|
||||
import 'package:mangayomi/models/video.dart';
|
||||
|
||||
abstract class MSourceProvider {
|
||||
MSourceProvider();
|
||||
abstract class MProvider {
|
||||
MProvider();
|
||||
|
||||
Future<MPages> getLatestUpdates(MSource sourceInfo, int page);
|
||||
|
||||
48
lib/eval/plugin.dart
Normal file
48
lib/eval/plugin.dart
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
import 'package:dart_eval/dart_eval.dart';
|
||||
import 'package:dart_eval/dart_eval_bridge.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_chapter.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_pages.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_status.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_provider.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_manga.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_source.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_track.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_video.dart';
|
||||
|
||||
class MEvalPlugin extends EvalPlugin {
|
||||
@override
|
||||
String get identifier => 'package:mangayomi';
|
||||
|
||||
@override
|
||||
void configureForCompile(BridgeDeclarationRegistry registry) {
|
||||
registry.defineBridgeClass($MProvider.$declaration);
|
||||
registry.defineBridgeClass($MPages.$declaration);
|
||||
registry.defineBridgeClass($MSource.$declaration);
|
||||
registry.defineBridgeClass($MVideo.$declaration);
|
||||
registry.defineBridgeClass($MTrack.$declaration);
|
||||
registry.defineBridgeClass($MChapter.$declaration);
|
||||
registry.defineBridgeClass($MManga.$declaration);
|
||||
registry.defineBridgeEnum($MStatus.$declaration);
|
||||
}
|
||||
|
||||
@override
|
||||
void configureForRuntime(Runtime runtime) {
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MProvider.', $MProvider.$construct,
|
||||
isBridge: true);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MChapter.', $MChapter.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MManga.', $MManga.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MPages.', $MPages.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MSource.', $MSource.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MVideo.', $MVideo.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MTrack.', $MTrack.$new);
|
||||
runtime.registerBridgeEnumValues(
|
||||
'package:mangayomi/bridge_lib.dart', 'MStatus', $MStatus.$values);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,119 +1,11 @@
|
|||
import 'dart:typed_data';
|
||||
|
||||
import 'package:dart_eval/dart_eval.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_bridge.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_chapter.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_pages.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_status.dart';
|
||||
import 'package:mangayomi/eval/bridge/source_provider.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_manga.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_source.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_track.dart';
|
||||
import 'package:mangayomi/eval/bridge/m_video.dart';
|
||||
import 'package:mangayomi/eval/plugin.dart';
|
||||
|
||||
Runtime runtimeEval(Uint8List bytecode) {
|
||||
final runtime = Runtime(bytecode.buffer.asByteData());
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MSourceProvider.', $MSourceProvider.$construct,
|
||||
isBridge: true);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MBridge.', $MBridge.$construct,
|
||||
isBridge: true);
|
||||
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MChapter.', $MChapter.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MManga.', $MManga.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MPages.', $MPages.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MSource.', $MSource.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MVideo.', $MVideo.$new);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MTrack.', $MTrack.$new);
|
||||
runtime.registerBridgeEnumValues(
|
||||
'package:mangayomi/bridge_lib.dart', 'MStatus', $MStatus.$values);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MBridge.http', $MBridge.$http);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.parseDates', $MBridge.$parseDates);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.gogoCdnExtractor', $MBridge.$gogoCdnExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.doodExtractor', $MBridge.$doodExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.rapidCloudExtractor', $MBridge.$rapidCloudExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.encryptAESCryptoJS', $MBridge.$encryptAESCryptoJS);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.decryptAESCryptoJS', $MBridge.$decryptAESCryptoJS);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.streamTapeExtractor', $MBridge.$streamTapeExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.streamWishExtractor', $MBridge.$streamWishExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.filemoonExtractor', $MBridge.$filemoonExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.mp4UploadExtractor', $MBridge.$mp4UploadExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.myTvExtractor', $MBridge.$myTvExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.sendVidExtractor', $MBridge.$sendVidExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.sibnetExtractor', $MBridge.$sibnetExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.okruExtractor', $MBridge.$okruExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.yourUploadExtractor', $MBridge.$yourUploadExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.voeExtractor', $MBridge.$voeExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.vidBomExtractor', $MBridge.$vidBomExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.streamlareExtractor', $MBridge.$streamlareExtractor);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.jsonPathToString', $MBridge.$jsonPathToString);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.toVideo', $MBridge.$toVideo);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.jsonPathToList', $MBridge.$jsonPathToList);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.jsonDecodeToList', $MBridge.$jsonDecodeToList);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.jsonPathToMap', $MBridge.$jsonPathToMap);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.parseStatus', $MBridge.$parseStatus);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.getMapValue', $MBridge.$getMapValue);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MBridge.regExp', $MBridge.$regExp);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.parseChapterDate', $MBridge.$parseChapterDate);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.substringAfter', $MBridge.$substringAfter);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.substringAfterLast', $MBridge.$substringAfterLast);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.substringBeforeLast', $MBridge.$substringBeforeLast);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.substringBefore', $MBridge.$substringBefore);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MBridge.evalJs', $MBridge.$evalJs);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.getHtmlViaWebview', $MBridge.$getHtmlViaWebview);
|
||||
runtime.registerBridgeFunc(
|
||||
'package:mangayomi/bridge_lib.dart', 'MBridge.xpath', $MBridge.$xpath);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.querySelector', $MBridge.$querySelector);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.deobfuscateJsPassword', $MBridge.$deobfuscateJsPassword);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.querySelectorAll', $MBridge.$querySelectorAll);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.cryptoHandler', $MBridge.$cryptoHandler);
|
||||
runtime.registerBridgeFunc('package:mangayomi/bridge_lib.dart',
|
||||
'MBridge.sortMapList', $MBridge.$sortMapList);
|
||||
final plugin = MEvalPlugin();
|
||||
runtime.addPlugin(plugin);
|
||||
runtime.setup();
|
||||
return runtime;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
const utils = r'''
|
||||
import 'package:mangayomi/bridge_lib.dart';
|
||||
class Substring {
|
||||
final String _text;
|
||||
|
||||
Substring(this._text);
|
||||
|
||||
Substring substringAfter(String pattern) {
|
||||
return Substring(MBridge.substringAfter(_text,pattern));
|
||||
}
|
||||
|
||||
Substring substringAfterLast(String pattern) {
|
||||
return Substring(MBridge.substringAfterLast(_text,pattern));
|
||||
}
|
||||
|
||||
Substring substringBefore(String pattern) {
|
||||
return Substring(MBridge.substringBefore(_text,pattern));
|
||||
}
|
||||
|
||||
Substring substringBeforeLast(String pattern) {
|
||||
return Substring(MBridge.substringBeforeLast(_text,pattern));
|
||||
}
|
||||
|
||||
|
||||
String get text => _text;
|
||||
}''';
|
||||
|
|
@ -11,7 +11,7 @@ import 'package:mangayomi/modules/anime/providers/anime_player_controller_provid
|
|||
import 'package:mangayomi/modules/manga/reader/providers/push_router.dart';
|
||||
import 'package:mangayomi/modules/widgets/progress_center.dart';
|
||||
import 'package:mangayomi/providers/l10n_providers.dart';
|
||||
import 'package:mangayomi/services/get_anime_servers.dart';
|
||||
import 'package:mangayomi/services/get_video_list.dart';
|
||||
import 'package:mangayomi/utils/colors.dart';
|
||||
import 'package:mangayomi/utils/media_query.dart';
|
||||
import 'package:media_kit/media_kit.dart';
|
||||
|
|
@ -48,7 +48,7 @@ class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
|
|||
[DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
|
||||
overlays: []);
|
||||
final serversData = ref.watch(getAnimeServersProvider(
|
||||
final serversData = ref.watch(getVideoListProvider(
|
||||
episode: widget.episode,
|
||||
));
|
||||
return serversData.when(
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import 'package:mangayomi/models/manga.dart';
|
|||
import 'package:mangayomi/modules/manga/home/manga_home_screen.dart';
|
||||
import 'package:mangayomi/providers/l10n_providers.dart';
|
||||
import 'package:mangayomi/router/router.dart';
|
||||
import 'package:mangayomi/services/search_manga.dart';
|
||||
import 'package:mangayomi/services/search.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/utils/cached_network.dart';
|
||||
import 'package:mangayomi/utils/colors.dart';
|
||||
|
|
@ -112,7 +112,7 @@ class SourceSearchScreen extends ConsumerWidget {
|
|||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final l10n = l10nLocalizations(context)!;
|
||||
final search = ref.watch(searchMangaProvider(
|
||||
final search = ref.watch(searchProvider(
|
||||
source: source,
|
||||
page: 1,
|
||||
query: query,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import 'package:mangayomi/eval/model/m_manga.dart';
|
|||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/services/get_manga_detail.dart';
|
||||
import 'package:mangayomi/services/get_detail.dart';
|
||||
import 'package:mangayomi/sources/utils/utils.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'update_manga_detail_providers.g.dart';
|
||||
|
|
@ -17,8 +17,8 @@ Future<dynamic> updateMangaDetail(UpdateMangaDetailRef ref,
|
|||
final source = getSource(manga.lang!, manga.source!);
|
||||
MManga getManga;
|
||||
try {
|
||||
getManga = await ref.watch(
|
||||
getMangaDetailProvider(url: manga.link!, source: source!).future);
|
||||
getManga = await ref
|
||||
.watch(getDetailProvider(url: manga.link!, source: source!).future);
|
||||
} catch (_) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'update_manga_detail_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$updateMangaDetailHash() => r'1e436b150c789357686ac93d90a3bf83f6044ab8';
|
||||
String _$updateMangaDetailHash() => r'09b3b2a4e8fbfbcbbabf41ec5c098e2b837bb4e8';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ import 'package:mangayomi/models/settings.dart';
|
|||
import 'package:mangayomi/modules/manga/download/providers/convert_to_cbz.dart';
|
||||
import 'package:mangayomi/modules/more/settings/downloads/providers/downloads_state_provider.dart';
|
||||
import 'package:mangayomi/providers/storage_provider.dart';
|
||||
import 'package:mangayomi/services/get_anime_servers.dart';
|
||||
import 'package:mangayomi/services/get_chapter_url.dart';
|
||||
import 'package:mangayomi/services/get_video_list.dart';
|
||||
import 'package:mangayomi/services/get_chapter_pages.dart';
|
||||
import 'package:mangayomi/utils/headers.dart';
|
||||
import 'package:mangayomi/utils/reg_exp_matcher.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
|
|
@ -61,7 +61,7 @@ Future<List<String>> downloadChapter(
|
|||
|
||||
if (isManga) {
|
||||
ref
|
||||
.read(getChapterUrlProvider(
|
||||
.read(getChapterPagesProvider(
|
||||
chapter: chapter,
|
||||
).future)
|
||||
.then((value) {
|
||||
|
|
@ -72,7 +72,7 @@ Future<List<String>> downloadChapter(
|
|||
});
|
||||
} else {
|
||||
ref
|
||||
.read(getAnimeServersProvider(
|
||||
.read(getVideoListProvider(
|
||||
episode: chapter,
|
||||
).future)
|
||||
.then((value) {
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ import 'package:mangayomi/eval/model/m_manga.dart';
|
|||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/providers/l10n_providers.dart';
|
||||
import 'package:mangayomi/services/get_latest_updates_manga.dart';
|
||||
import 'package:mangayomi/services/get_popular_manga.dart';
|
||||
import 'package:mangayomi/services/search_manga.dart';
|
||||
import 'package:mangayomi/services/get_latest_updates.dart';
|
||||
import 'package:mangayomi/services/get_popular.dart';
|
||||
import 'package:mangayomi/services/search.dart';
|
||||
import 'package:mangayomi/utils/colors.dart';
|
||||
import 'package:mangayomi/utils/media_query.dart';
|
||||
import 'package:mangayomi/modules/library/widgets/search_text_form_field.dart';
|
||||
|
|
@ -63,17 +63,17 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
|
|||
_fullDataLength = _fullDataLength + 50;
|
||||
} else {
|
||||
if (_selectedIndex == 0 && !_isSearch && _query.isEmpty) {
|
||||
mangaResList = await ref.watch(getPopularMangaProvider(
|
||||
mangaResList = await ref.watch(getPopularProvider(
|
||||
source: widget.source,
|
||||
page: _page + 1,
|
||||
).future);
|
||||
} else if (_selectedIndex == 1 && !_isSearch && _query.isEmpty) {
|
||||
mangaResList = await ref.watch(getLatestUpdatesMangaProvider(
|
||||
mangaResList = await ref.watch(getLatestUpdatesProvider(
|
||||
source: widget.source,
|
||||
page: _page + 1,
|
||||
).future);
|
||||
} else if (_selectedIndex == 2 && _isSearch && _query.isNotEmpty) {
|
||||
mangaResList = await ref.watch(searchMangaProvider(
|
||||
mangaResList = await ref.watch(searchProvider(
|
||||
source: widget.source,
|
||||
query: _query,
|
||||
page: _page + 1,
|
||||
|
|
@ -98,12 +98,12 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
|
|||
Widget build(BuildContext context) {
|
||||
if (_selectedIndex == 2 && _isSearch && _query.isNotEmpty) {
|
||||
_getManga = ref.watch(
|
||||
searchMangaProvider(source: widget.source, query: _query, page: 1));
|
||||
searchProvider(source: widget.source, query: _query, page: 1));
|
||||
} else if (_selectedIndex == 1 && !_isSearch && _query.isEmpty) {
|
||||
_getManga = ref
|
||||
.watch(getLatestUpdatesMangaProvider(source: widget.source, page: 1));
|
||||
.watch(getLatestUpdatesProvider(source: widget.source, page: 1));
|
||||
} else if (_selectedIndex == 0 && !_isSearch && _query.isEmpty) {
|
||||
_getManga = ref.watch(getPopularMangaProvider(
|
||||
_getManga = ref.watch(getPopularProvider(
|
||||
source: widget.source,
|
||||
page: 1,
|
||||
));
|
||||
|
|
@ -335,19 +335,19 @@ class _MangaHomeScreenState extends ConsumerState<MangaHomeScreen> {
|
|||
if (_selectedIndex == 2 &&
|
||||
_isSearch &&
|
||||
_query.isNotEmpty) {
|
||||
ref.invalidate(searchMangaProvider(
|
||||
ref.invalidate(searchProvider(
|
||||
source: widget.source,
|
||||
query: _query,
|
||||
page: 1));
|
||||
} else if (_selectedIndex == 1 &&
|
||||
!_isSearch &&
|
||||
_query.isEmpty) {
|
||||
ref.invalidate(getLatestUpdatesMangaProvider(
|
||||
ref.invalidate(getLatestUpdatesProvider(
|
||||
source: widget.source, page: 1));
|
||||
} else if (_selectedIndex == 0 &&
|
||||
!_isSearch &&
|
||||
_query.isEmpty) {
|
||||
ref.invalidate(getPopularMangaProvider(
|
||||
ref.invalidate(getPopularProvider(
|
||||
source: widget.source,
|
||||
page: 1,
|
||||
));
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_pr
|
|||
import 'package:mangayomi/providers/l10n_providers.dart';
|
||||
import 'package:mangayomi/sources/utils/utils.dart';
|
||||
import 'package:mangayomi/modules/manga/reader/providers/push_router.dart';
|
||||
import 'package:mangayomi/services/get_chapter_url.dart';
|
||||
import 'package:mangayomi/services/get_chapter_pages.dart';
|
||||
import 'package:mangayomi/utils/colors.dart';
|
||||
import 'package:mangayomi/utils/headers.dart';
|
||||
import 'package:mangayomi/utils/media_query.dart';
|
||||
|
|
@ -48,7 +48,7 @@ class MangaReaderView extends ConsumerWidget {
|
|||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
|
||||
overlays: []);
|
||||
final chapterData = ref.watch(getChapterUrlProvider(
|
||||
final chapterData = ref.watch(getChapterPagesProvider(
|
||||
chapter: chapter,
|
||||
));
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ class MangaChapterPageGallery extends ConsumerStatefulWidget {
|
|||
required this.chapter,
|
||||
required this.chapterUrlModel,
|
||||
});
|
||||
final GetChapterUrlModel chapterUrlModel;
|
||||
final GetChapterPagesModel chapterUrlModel;
|
||||
|
||||
final Chapter chapter;
|
||||
|
||||
|
|
@ -173,7 +173,7 @@ class _MangaChapterPageGalleryState
|
|||
super.dispose();
|
||||
}
|
||||
|
||||
late GetChapterUrlModel _chapterUrlModel = widget.chapterUrlModel;
|
||||
late GetChapterPagesModel _chapterUrlModel = widget.chapterUrlModel;
|
||||
|
||||
late Chapter chapter = widget.chapter;
|
||||
|
||||
|
|
@ -744,7 +744,7 @@ class _MangaChapterPageGalleryState
|
|||
hasNextChapter ? _readerController.getNextChapter() : null;
|
||||
if (chapter != null) {
|
||||
ref
|
||||
.watch(getChapterUrlProvider(
|
||||
.watch(getChapterPagesProvider(
|
||||
chapter: chapter,
|
||||
).future)
|
||||
.then((value) {
|
||||
|
|
@ -755,7 +755,7 @@ class _MangaChapterPageGalleryState
|
|||
}
|
||||
}
|
||||
|
||||
_preloadNextChapter(GetChapterUrlModel chapterData, Chapter chap) {
|
||||
_preloadNextChapter(GetChapterPagesModel chapterData, Chapter chap) {
|
||||
try {
|
||||
int length = 0;
|
||||
bool isExist = false;
|
||||
|
|
@ -854,7 +854,7 @@ class _MangaChapterPageGalleryState
|
|||
hasNextChapter ? _readerController.getNextChapter() : null;
|
||||
if (chapter != null) {
|
||||
ref
|
||||
.watch(getChapterUrlProvider(
|
||||
.watch(getChapterPagesProvider(
|
||||
chapter: chapter,
|
||||
).future)
|
||||
.then((value) {
|
||||
|
|
@ -1891,7 +1891,7 @@ class UChapDataPreload {
|
|||
bool? isLocale;
|
||||
Uint8List? archiveImage;
|
||||
int? index;
|
||||
GetChapterUrlModel? chapterUrlModel;
|
||||
GetChapterPagesModel? chapterUrlModel;
|
||||
int? pageIndex;
|
||||
Uint8List? cropImage;
|
||||
UChapDataPreload(this.chapter, this.path, this.url, this.isLocale,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:http/http.dart' as http;
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:js_packer/js_packer.dart';
|
||||
import 'package:mangayomi/models/video.dart';
|
||||
import 'package:mangayomi/utils/extensions.dart';
|
||||
import 'package:mangayomi/utils/xpath_selector.dart';
|
||||
|
|
@ -16,7 +16,7 @@ class FilemoonExtractor {
|
|||
.queryXPath('//script[contains(text(), "eval")]/text()')
|
||||
.attr;
|
||||
|
||||
final unpacked = MBridge.evalJs(jsEval!);
|
||||
final unpacked = JSPacker(jsEval!).unpack() ?? "";
|
||||
|
||||
final masterUrl = unpacked.isNotEmpty
|
||||
? unpacked.substringAfter('{file:"').substringBefore('"}')
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:http/http.dart' as http;
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:js_packer/js_packer.dart';
|
||||
import 'package:mangayomi/models/video.dart';
|
||||
import 'package:mangayomi/utils/extensions.dart';
|
||||
import 'package:mangayomi/utils/xpath_selector.dart';
|
||||
|
|
@ -22,7 +22,7 @@ class Mp4uploadExtractor {
|
|||
.attrs;
|
||||
|
||||
if (scriptElementWithEval.isNotEmpty) {
|
||||
script = MBridge.evalJs(script);
|
||||
script = JSPacker(script).unpack() ?? "";
|
||||
} else {
|
||||
final scriptElementWithSrc = xpathSelector(response.body)
|
||||
.queryXPath('//script[contains(text(), "player.src")]/text()')
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:http/http.dart' as http;
|
||||
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||
import 'package:js_packer/js_packer.dart';
|
||||
import 'package:mangayomi/models/video.dart';
|
||||
import 'package:mangayomi/utils/extensions.dart';
|
||||
import 'package:mangayomi/utils/xpath_selector.dart';
|
||||
|
|
@ -20,7 +20,7 @@ class StreamWishExtractor {
|
|||
return [];
|
||||
}
|
||||
|
||||
String? masterUrl = MBridge.evalJs(jsEval.first!)
|
||||
String? masterUrl = (JSPacker(jsEval.first!).unpack() ?? "")
|
||||
.substringAfter('source')
|
||||
.substringAfter('file:"')
|
||||
.substringBefore('"');
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import 'dart:async';
|
|||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
import 'package:mangayomi/eval/compiler/compiler.dart';
|
||||
import 'package:mangayomi/eval/model/source_provider.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
|
|
@ -15,15 +15,15 @@ import 'package:mangayomi/utils/reg_exp_matcher.dart';
|
|||
import 'package:mangayomi/modules/more/providers/incognito_mode_state_provider.dart';
|
||||
import 'package:mangayomi/sources/source_test.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'get_chapter_url.g.dart';
|
||||
part 'get_chapter_pages.g.dart';
|
||||
|
||||
class GetChapterUrlModel {
|
||||
class GetChapterPagesModel {
|
||||
Directory? path;
|
||||
List<String> pageUrls = [];
|
||||
List<bool> isLocaleList = [];
|
||||
List<Uint8List?> archiveImages = [];
|
||||
List<UChapDataPreload> uChapDataPreload;
|
||||
GetChapterUrlModel(
|
||||
GetChapterPagesModel(
|
||||
{required this.path,
|
||||
required this.pageUrls,
|
||||
required this.isLocaleList,
|
||||
|
|
@ -32,8 +32,8 @@ class GetChapterUrlModel {
|
|||
}
|
||||
|
||||
@riverpod
|
||||
Future<GetChapterUrlModel> getChapterUrl(
|
||||
GetChapterUrlRef ref, {
|
||||
Future<GetChapterPagesModel> getChapterPages(
|
||||
GetChapterPagesRef ref, {
|
||||
required Chapter chapter,
|
||||
}) async {
|
||||
List<UChapDataPreload> uChapDataPreloadp = [];
|
||||
|
|
@ -66,7 +66,7 @@ Future<GetChapterUrlModel> getChapterUrl(
|
|||
final runtime = runtimeEval(bytecode);
|
||||
|
||||
var res = await runtime.executeLib('package:mangayomi/main.dart', 'main');
|
||||
pageUrls = (await (res as MSourceProvider)
|
||||
pageUrls = (await (res as MProvider)
|
||||
.getPageList(source.toMSource(), chapter.url!));
|
||||
}
|
||||
}
|
||||
|
|
@ -119,7 +119,7 @@ Future<GetChapterUrlModel> getChapterUrl(
|
|||
isLocaleList[i],
|
||||
archiveImages[i],
|
||||
i,
|
||||
GetChapterUrlModel(
|
||||
GetChapterPagesModel(
|
||||
path: path,
|
||||
pageUrls: pageUrls,
|
||||
isLocaleList: isLocaleList,
|
||||
|
|
@ -129,7 +129,7 @@ Future<GetChapterUrlModel> getChapterUrl(
|
|||
}
|
||||
}
|
||||
|
||||
return GetChapterUrlModel(
|
||||
return GetChapterPagesModel(
|
||||
path: path,
|
||||
pageUrls: pageUrls,
|
||||
isLocaleList: isLocaleList,
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'get_chapter_url.dart';
|
||||
part of 'get_chapter_pages.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getChapterUrlHash() => r'd6b596903c5d72d96755fb6e439aa825310ae5da';
|
||||
String _$getChapterPagesHash() => r'ebd047f73e22df675982127c901b2d386873e208';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -29,27 +29,27 @@ class _SystemHash {
|
|||
}
|
||||
}
|
||||
|
||||
/// See also [getChapterUrl].
|
||||
@ProviderFor(getChapterUrl)
|
||||
const getChapterUrlProvider = GetChapterUrlFamily();
|
||||
/// See also [getChapterPages].
|
||||
@ProviderFor(getChapterPages)
|
||||
const getChapterPagesProvider = GetChapterPagesFamily();
|
||||
|
||||
/// See also [getChapterUrl].
|
||||
class GetChapterUrlFamily extends Family<AsyncValue<GetChapterUrlModel>> {
|
||||
/// See also [getChapterUrl].
|
||||
const GetChapterUrlFamily();
|
||||
/// See also [getChapterPages].
|
||||
class GetChapterPagesFamily extends Family<AsyncValue<GetChapterPagesModel>> {
|
||||
/// See also [getChapterPages].
|
||||
const GetChapterPagesFamily();
|
||||
|
||||
/// See also [getChapterUrl].
|
||||
GetChapterUrlProvider call({
|
||||
/// See also [getChapterPages].
|
||||
GetChapterPagesProvider call({
|
||||
required Chapter chapter,
|
||||
}) {
|
||||
return GetChapterUrlProvider(
|
||||
return GetChapterPagesProvider(
|
||||
chapter: chapter,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
GetChapterUrlProvider getProviderOverride(
|
||||
covariant GetChapterUrlProvider provider,
|
||||
GetChapterPagesProvider getProviderOverride(
|
||||
covariant GetChapterPagesProvider provider,
|
||||
) {
|
||||
return call(
|
||||
chapter: provider.chapter,
|
||||
|
|
@ -68,33 +68,33 @@ class GetChapterUrlFamily extends Family<AsyncValue<GetChapterUrlModel>> {
|
|||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getChapterUrlProvider';
|
||||
String? get name => r'getChapterPagesProvider';
|
||||
}
|
||||
|
||||
/// See also [getChapterUrl].
|
||||
class GetChapterUrlProvider
|
||||
extends AutoDisposeFutureProvider<GetChapterUrlModel> {
|
||||
/// See also [getChapterUrl].
|
||||
GetChapterUrlProvider({
|
||||
/// See also [getChapterPages].
|
||||
class GetChapterPagesProvider
|
||||
extends AutoDisposeFutureProvider<GetChapterPagesModel> {
|
||||
/// See also [getChapterPages].
|
||||
GetChapterPagesProvider({
|
||||
required Chapter chapter,
|
||||
}) : this._internal(
|
||||
(ref) => getChapterUrl(
|
||||
ref as GetChapterUrlRef,
|
||||
(ref) => getChapterPages(
|
||||
ref as GetChapterPagesRef,
|
||||
chapter: chapter,
|
||||
),
|
||||
from: getChapterUrlProvider,
|
||||
name: r'getChapterUrlProvider',
|
||||
from: getChapterPagesProvider,
|
||||
name: r'getChapterPagesProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getChapterUrlHash,
|
||||
dependencies: GetChapterUrlFamily._dependencies,
|
||||
: _$getChapterPagesHash,
|
||||
dependencies: GetChapterPagesFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetChapterUrlFamily._allTransitiveDependencies,
|
||||
GetChapterPagesFamily._allTransitiveDependencies,
|
||||
chapter: chapter,
|
||||
);
|
||||
|
||||
GetChapterUrlProvider._internal(
|
||||
GetChapterPagesProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
|
|
@ -108,12 +108,12 @@ class GetChapterUrlProvider
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<GetChapterUrlModel> Function(GetChapterUrlRef provider) create,
|
||||
FutureOr<GetChapterPagesModel> Function(GetChapterPagesRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetChapterUrlProvider._internal(
|
||||
(ref) => create(ref as GetChapterUrlRef),
|
||||
override: GetChapterPagesProvider._internal(
|
||||
(ref) => create(ref as GetChapterPagesRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
|
|
@ -125,13 +125,13 @@ class GetChapterUrlProvider
|
|||
}
|
||||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<GetChapterUrlModel> createElement() {
|
||||
return _GetChapterUrlProviderElement(this);
|
||||
AutoDisposeFutureProviderElement<GetChapterPagesModel> createElement() {
|
||||
return _GetChapterPagesProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetChapterUrlProvider && other.chapter == chapter;
|
||||
return other is GetChapterPagesProvider && other.chapter == chapter;
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -143,18 +143,18 @@ class GetChapterUrlProvider
|
|||
}
|
||||
}
|
||||
|
||||
mixin GetChapterUrlRef on AutoDisposeFutureProviderRef<GetChapterUrlModel> {
|
||||
mixin GetChapterPagesRef on AutoDisposeFutureProviderRef<GetChapterPagesModel> {
|
||||
/// The parameter `chapter` of this provider.
|
||||
Chapter get chapter;
|
||||
}
|
||||
|
||||
class _GetChapterUrlProviderElement
|
||||
extends AutoDisposeFutureProviderElement<GetChapterUrlModel>
|
||||
with GetChapterUrlRef {
|
||||
_GetChapterUrlProviderElement(super.provider);
|
||||
class _GetChapterPagesProviderElement
|
||||
extends AutoDisposeFutureProviderElement<GetChapterPagesModel>
|
||||
with GetChapterPagesRef {
|
||||
_GetChapterPagesProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Chapter get chapter => (origin as GetChapterUrlProvider).chapter;
|
||||
Chapter get chapter => (origin as GetChapterPagesProvider).chapter;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
import 'dart:async';
|
||||
import 'package:mangayomi/eval/model/m_manga.dart';
|
||||
import 'package:mangayomi/eval/compiler/compiler.dart';
|
||||
import 'package:mangayomi/eval/model/source_provider.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/models/source.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';
|
||||
part 'get_detail.g.dart';
|
||||
|
||||
@riverpod
|
||||
Future<MManga> getMangaDetail(
|
||||
GetMangaDetailRef ref, {
|
||||
Future<MManga> getDetail(
|
||||
GetDetailRef ref, {
|
||||
required String url,
|
||||
required Source source,
|
||||
}) async {
|
||||
|
|
@ -22,8 +22,7 @@ Future<MManga> getMangaDetail(
|
|||
|
||||
var res = await runtime.executeLib('package:mangayomi/main.dart', 'main');
|
||||
try {
|
||||
mangadetail =
|
||||
await (res as MSourceProvider).getDetail(source.toMSource(), url);
|
||||
mangadetail = await (res as MProvider).getDetail(source.toMSource(), url);
|
||||
} catch (e) {
|
||||
throw Exception(e);
|
||||
}
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'get_manga_detail.dart';
|
||||
part of 'get_detail.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getMangaDetailHash() => r'eb7a5bd7ba691d3bac1edc50c5d1e3edc8be89f8';
|
||||
String _$getDetailHash() => r'683f6a473aca093cc35d5d9756ae9cbdfb302f88';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -29,29 +29,29 @@ class _SystemHash {
|
|||
}
|
||||
}
|
||||
|
||||
/// See also [getMangaDetail].
|
||||
@ProviderFor(getMangaDetail)
|
||||
const getMangaDetailProvider = GetMangaDetailFamily();
|
||||
/// See also [getDetail].
|
||||
@ProviderFor(getDetail)
|
||||
const getDetailProvider = GetDetailFamily();
|
||||
|
||||
/// See also [getMangaDetail].
|
||||
class GetMangaDetailFamily extends Family<AsyncValue<MManga>> {
|
||||
/// See also [getMangaDetail].
|
||||
const GetMangaDetailFamily();
|
||||
/// See also [getDetail].
|
||||
class GetDetailFamily extends Family<AsyncValue<MManga>> {
|
||||
/// See also [getDetail].
|
||||
const GetDetailFamily();
|
||||
|
||||
/// See also [getMangaDetail].
|
||||
GetMangaDetailProvider call({
|
||||
/// See also [getDetail].
|
||||
GetDetailProvider call({
|
||||
required String url,
|
||||
required Source source,
|
||||
}) {
|
||||
return GetMangaDetailProvider(
|
||||
return GetDetailProvider(
|
||||
url: url,
|
||||
source: source,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
GetMangaDetailProvider getProviderOverride(
|
||||
covariant GetMangaDetailProvider provider,
|
||||
GetDetailProvider getProviderOverride(
|
||||
covariant GetDetailProvider provider,
|
||||
) {
|
||||
return call(
|
||||
url: provider.url,
|
||||
|
|
@ -71,35 +71,34 @@ class GetMangaDetailFamily extends Family<AsyncValue<MManga>> {
|
|||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getMangaDetailProvider';
|
||||
String? get name => r'getDetailProvider';
|
||||
}
|
||||
|
||||
/// See also [getMangaDetail].
|
||||
class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
|
||||
/// See also [getMangaDetail].
|
||||
GetMangaDetailProvider({
|
||||
/// See also [getDetail].
|
||||
class GetDetailProvider extends AutoDisposeFutureProvider<MManga> {
|
||||
/// See also [getDetail].
|
||||
GetDetailProvider({
|
||||
required String url,
|
||||
required Source source,
|
||||
}) : this._internal(
|
||||
(ref) => getMangaDetail(
|
||||
ref as GetMangaDetailRef,
|
||||
(ref) => getDetail(
|
||||
ref as GetDetailRef,
|
||||
url: url,
|
||||
source: source,
|
||||
),
|
||||
from: getMangaDetailProvider,
|
||||
name: r'getMangaDetailProvider',
|
||||
from: getDetailProvider,
|
||||
name: r'getDetailProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getMangaDetailHash,
|
||||
dependencies: GetMangaDetailFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetMangaDetailFamily._allTransitiveDependencies,
|
||||
: _$getDetailHash,
|
||||
dependencies: GetDetailFamily._dependencies,
|
||||
allTransitiveDependencies: GetDetailFamily._allTransitiveDependencies,
|
||||
url: url,
|
||||
source: source,
|
||||
);
|
||||
|
||||
GetMangaDetailProvider._internal(
|
||||
GetDetailProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
|
|
@ -115,12 +114,12 @@ class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<MManga> Function(GetMangaDetailRef provider) create,
|
||||
FutureOr<MManga> Function(GetDetailRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetMangaDetailProvider._internal(
|
||||
(ref) => create(ref as GetMangaDetailRef),
|
||||
override: GetDetailProvider._internal(
|
||||
(ref) => create(ref as GetDetailRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
|
|
@ -134,12 +133,12 @@ class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
|
|||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<MManga> createElement() {
|
||||
return _GetMangaDetailProviderElement(this);
|
||||
return _GetDetailProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetMangaDetailProvider &&
|
||||
return other is GetDetailProvider &&
|
||||
other.url == url &&
|
||||
other.source == source;
|
||||
}
|
||||
|
|
@ -154,7 +153,7 @@ class GetMangaDetailProvider extends AutoDisposeFutureProvider<MManga> {
|
|||
}
|
||||
}
|
||||
|
||||
mixin GetMangaDetailRef on AutoDisposeFutureProviderRef<MManga> {
|
||||
mixin GetDetailRef on AutoDisposeFutureProviderRef<MManga> {
|
||||
/// The parameter `url` of this provider.
|
||||
String get url;
|
||||
|
||||
|
|
@ -162,14 +161,14 @@ mixin GetMangaDetailRef on AutoDisposeFutureProviderRef<MManga> {
|
|||
Source get source;
|
||||
}
|
||||
|
||||
class _GetMangaDetailProviderElement
|
||||
extends AutoDisposeFutureProviderElement<MManga> with GetMangaDetailRef {
|
||||
_GetMangaDetailProviderElement(super.provider);
|
||||
class _GetDetailProviderElement extends AutoDisposeFutureProviderElement<MManga>
|
||||
with GetDetailRef {
|
||||
_GetDetailProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
String get url => (origin as GetMangaDetailProvider).url;
|
||||
String get url => (origin as GetDetailProvider).url;
|
||||
@override
|
||||
Source get source => (origin as GetMangaDetailProvider).source;
|
||||
Source get source => (origin as GetDetailProvider).source;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
import 'dart:async';
|
||||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/eval/compiler/compiler.dart';
|
||||
import 'package:mangayomi/eval/model/source_provider.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/eval/runtime/runtime.dart';
|
||||
import 'package:mangayomi/sources/source_test.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'get_latest_updates_manga.g.dart';
|
||||
part 'get_latest_updates.g.dart';
|
||||
|
||||
@riverpod
|
||||
Future<MPages?> getLatestUpdatesManga(
|
||||
GetLatestUpdatesMangaRef ref, {
|
||||
Future<MPages?> getLatestUpdates(
|
||||
GetLatestUpdatesRef ref, {
|
||||
required Source source,
|
||||
required int page,
|
||||
}) async {
|
||||
|
|
@ -23,8 +23,8 @@ Future<MPages?> getLatestUpdatesManga(
|
|||
final runtime = runtimeEval(bytecode);
|
||||
|
||||
var res = await runtime.executeLib('package:mangayomi/main.dart', 'main');
|
||||
latestUpdatesManga = await (res as MSourceProvider)
|
||||
.getLatestUpdates(source.toMSource(), 1);
|
||||
latestUpdatesManga =
|
||||
await (res as MProvider).getLatestUpdates(source.toMSource(), page);
|
||||
} catch (e) {
|
||||
throw Exception(e);
|
||||
}
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'get_latest_updates_manga.dart';
|
||||
part of 'get_latest_updates.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getLatestUpdatesMangaHash() =>
|
||||
r'18b028e5a9dd359c19f1850819f0a46e50c0f27d';
|
||||
String _$getLatestUpdatesHash() => r'19ccde133a23148dd90f29110b5f9804cd2cb942';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -30,29 +29,29 @@ class _SystemHash {
|
|||
}
|
||||
}
|
||||
|
||||
/// See also [getLatestUpdatesManga].
|
||||
@ProviderFor(getLatestUpdatesManga)
|
||||
const getLatestUpdatesMangaProvider = GetLatestUpdatesMangaFamily();
|
||||
/// See also [getLatestUpdates].
|
||||
@ProviderFor(getLatestUpdates)
|
||||
const getLatestUpdatesProvider = GetLatestUpdatesFamily();
|
||||
|
||||
/// See also [getLatestUpdatesManga].
|
||||
class GetLatestUpdatesMangaFamily extends Family<AsyncValue<MPages?>> {
|
||||
/// See also [getLatestUpdatesManga].
|
||||
const GetLatestUpdatesMangaFamily();
|
||||
/// See also [getLatestUpdates].
|
||||
class GetLatestUpdatesFamily extends Family<AsyncValue<MPages?>> {
|
||||
/// See also [getLatestUpdates].
|
||||
const GetLatestUpdatesFamily();
|
||||
|
||||
/// See also [getLatestUpdatesManga].
|
||||
GetLatestUpdatesMangaProvider call({
|
||||
/// See also [getLatestUpdates].
|
||||
GetLatestUpdatesProvider call({
|
||||
required Source source,
|
||||
required int page,
|
||||
}) {
|
||||
return GetLatestUpdatesMangaProvider(
|
||||
return GetLatestUpdatesProvider(
|
||||
source: source,
|
||||
page: page,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
GetLatestUpdatesMangaProvider getProviderOverride(
|
||||
covariant GetLatestUpdatesMangaProvider provider,
|
||||
GetLatestUpdatesProvider getProviderOverride(
|
||||
covariant GetLatestUpdatesProvider provider,
|
||||
) {
|
||||
return call(
|
||||
source: provider.source,
|
||||
|
|
@ -72,35 +71,35 @@ class GetLatestUpdatesMangaFamily extends Family<AsyncValue<MPages?>> {
|
|||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getLatestUpdatesMangaProvider';
|
||||
String? get name => r'getLatestUpdatesProvider';
|
||||
}
|
||||
|
||||
/// See also [getLatestUpdatesManga].
|
||||
class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
||||
/// See also [getLatestUpdatesManga].
|
||||
GetLatestUpdatesMangaProvider({
|
||||
/// See also [getLatestUpdates].
|
||||
class GetLatestUpdatesProvider extends AutoDisposeFutureProvider<MPages?> {
|
||||
/// See also [getLatestUpdates].
|
||||
GetLatestUpdatesProvider({
|
||||
required Source source,
|
||||
required int page,
|
||||
}) : this._internal(
|
||||
(ref) => getLatestUpdatesManga(
|
||||
ref as GetLatestUpdatesMangaRef,
|
||||
(ref) => getLatestUpdates(
|
||||
ref as GetLatestUpdatesRef,
|
||||
source: source,
|
||||
page: page,
|
||||
),
|
||||
from: getLatestUpdatesMangaProvider,
|
||||
name: r'getLatestUpdatesMangaProvider',
|
||||
from: getLatestUpdatesProvider,
|
||||
name: r'getLatestUpdatesProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getLatestUpdatesMangaHash,
|
||||
dependencies: GetLatestUpdatesMangaFamily._dependencies,
|
||||
: _$getLatestUpdatesHash,
|
||||
dependencies: GetLatestUpdatesFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetLatestUpdatesMangaFamily._allTransitiveDependencies,
|
||||
GetLatestUpdatesFamily._allTransitiveDependencies,
|
||||
source: source,
|
||||
page: page,
|
||||
);
|
||||
|
||||
GetLatestUpdatesMangaProvider._internal(
|
||||
GetLatestUpdatesProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
|
|
@ -116,12 +115,12 @@ class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<MPages?> Function(GetLatestUpdatesMangaRef provider) create,
|
||||
FutureOr<MPages?> Function(GetLatestUpdatesRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetLatestUpdatesMangaProvider._internal(
|
||||
(ref) => create(ref as GetLatestUpdatesMangaRef),
|
||||
override: GetLatestUpdatesProvider._internal(
|
||||
(ref) => create(ref as GetLatestUpdatesRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
|
|
@ -135,12 +134,12 @@ class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<MPages?> createElement() {
|
||||
return _GetLatestUpdatesMangaProviderElement(this);
|
||||
return _GetLatestUpdatesProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetLatestUpdatesMangaProvider &&
|
||||
return other is GetLatestUpdatesProvider &&
|
||||
other.source == source &&
|
||||
other.page == page;
|
||||
}
|
||||
|
|
@ -155,7 +154,7 @@ class GetLatestUpdatesMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
}
|
||||
}
|
||||
|
||||
mixin GetLatestUpdatesMangaRef on AutoDisposeFutureProviderRef<MPages?> {
|
||||
mixin GetLatestUpdatesRef on AutoDisposeFutureProviderRef<MPages?> {
|
||||
/// The parameter `source` of this provider.
|
||||
Source get source;
|
||||
|
||||
|
|
@ -163,15 +162,14 @@ mixin GetLatestUpdatesMangaRef on AutoDisposeFutureProviderRef<MPages?> {
|
|||
int get page;
|
||||
}
|
||||
|
||||
class _GetLatestUpdatesMangaProviderElement
|
||||
extends AutoDisposeFutureProviderElement<MPages?>
|
||||
with GetLatestUpdatesMangaRef {
|
||||
_GetLatestUpdatesMangaProviderElement(super.provider);
|
||||
class _GetLatestUpdatesProviderElement
|
||||
extends AutoDisposeFutureProviderElement<MPages?> with GetLatestUpdatesRef {
|
||||
_GetLatestUpdatesProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Source get source => (origin as GetLatestUpdatesMangaProvider).source;
|
||||
Source get source => (origin as GetLatestUpdatesProvider).source;
|
||||
@override
|
||||
int get page => (origin as GetLatestUpdatesMangaProvider).page;
|
||||
int get page => (origin as GetLatestUpdatesProvider).page;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
import 'dart:async';
|
||||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/eval/compiler/compiler.dart';
|
||||
import 'package:mangayomi/eval/model/source_provider.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/eval/runtime/runtime.dart';
|
||||
import 'package:mangayomi/sources/source_test.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'get_popular_manga.g.dart';
|
||||
part 'get_popular.g.dart';
|
||||
|
||||
@riverpod
|
||||
Future<MPages?> getPopularManga(
|
||||
GetPopularMangaRef ref, {
|
||||
Future<MPages?> getPopular(
|
||||
GetPopularRef ref, {
|
||||
required Source source,
|
||||
required int page,
|
||||
}) async {
|
||||
|
|
@ -23,8 +23,8 @@ Future<MPages?> getPopularManga(
|
|||
final runtime = runtimeEval(bytecode);
|
||||
|
||||
var res = runtime.executeLib('package:mangayomi/main.dart', 'main');
|
||||
popularManga = await (res as MSourceProvider)
|
||||
.getPopular(source.toMSource(), page);
|
||||
popularManga =
|
||||
await (res as MProvider).getPopular(source.toMSource(), page);
|
||||
} catch (e) {
|
||||
throw Exception(e);
|
||||
}
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'get_popular_manga.dart';
|
||||
part of 'get_popular.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getPopularMangaHash() => r'6dbb566dffd311195e5e98b2c49470435a6da8dd';
|
||||
String _$getPopularHash() => r'9eb971f8ca52854efe7431010b93a998e425f9da';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -29,29 +29,29 @@ class _SystemHash {
|
|||
}
|
||||
}
|
||||
|
||||
/// See also [getPopularManga].
|
||||
@ProviderFor(getPopularManga)
|
||||
const getPopularMangaProvider = GetPopularMangaFamily();
|
||||
/// See also [getPopular].
|
||||
@ProviderFor(getPopular)
|
||||
const getPopularProvider = GetPopularFamily();
|
||||
|
||||
/// See also [getPopularManga].
|
||||
class GetPopularMangaFamily extends Family<AsyncValue<MPages?>> {
|
||||
/// See also [getPopularManga].
|
||||
const GetPopularMangaFamily();
|
||||
/// See also [getPopular].
|
||||
class GetPopularFamily extends Family<AsyncValue<MPages?>> {
|
||||
/// See also [getPopular].
|
||||
const GetPopularFamily();
|
||||
|
||||
/// See also [getPopularManga].
|
||||
GetPopularMangaProvider call({
|
||||
/// See also [getPopular].
|
||||
GetPopularProvider call({
|
||||
required Source source,
|
||||
required int page,
|
||||
}) {
|
||||
return GetPopularMangaProvider(
|
||||
return GetPopularProvider(
|
||||
source: source,
|
||||
page: page,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
GetPopularMangaProvider getProviderOverride(
|
||||
covariant GetPopularMangaProvider provider,
|
||||
GetPopularProvider getProviderOverride(
|
||||
covariant GetPopularProvider provider,
|
||||
) {
|
||||
return call(
|
||||
source: provider.source,
|
||||
|
|
@ -71,35 +71,35 @@ class GetPopularMangaFamily extends Family<AsyncValue<MPages?>> {
|
|||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getPopularMangaProvider';
|
||||
String? get name => r'getPopularProvider';
|
||||
}
|
||||
|
||||
/// See also [getPopularManga].
|
||||
class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
||||
/// See also [getPopularManga].
|
||||
GetPopularMangaProvider({
|
||||
/// See also [getPopular].
|
||||
class GetPopularProvider extends AutoDisposeFutureProvider<MPages?> {
|
||||
/// See also [getPopular].
|
||||
GetPopularProvider({
|
||||
required Source source,
|
||||
required int page,
|
||||
}) : this._internal(
|
||||
(ref) => getPopularManga(
|
||||
ref as GetPopularMangaRef,
|
||||
(ref) => getPopular(
|
||||
ref as GetPopularRef,
|
||||
source: source,
|
||||
page: page,
|
||||
),
|
||||
from: getPopularMangaProvider,
|
||||
name: r'getPopularMangaProvider',
|
||||
from: getPopularProvider,
|
||||
name: r'getPopularProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getPopularMangaHash,
|
||||
dependencies: GetPopularMangaFamily._dependencies,
|
||||
: _$getPopularHash,
|
||||
dependencies: GetPopularFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetPopularMangaFamily._allTransitiveDependencies,
|
||||
GetPopularFamily._allTransitiveDependencies,
|
||||
source: source,
|
||||
page: page,
|
||||
);
|
||||
|
||||
GetPopularMangaProvider._internal(
|
||||
GetPopularProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
|
|
@ -115,12 +115,12 @@ class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<MPages?> Function(GetPopularMangaRef provider) create,
|
||||
FutureOr<MPages?> Function(GetPopularRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetPopularMangaProvider._internal(
|
||||
(ref) => create(ref as GetPopularMangaRef),
|
||||
override: GetPopularProvider._internal(
|
||||
(ref) => create(ref as GetPopularRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
|
|
@ -134,12 +134,12 @@ class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<MPages?> createElement() {
|
||||
return _GetPopularMangaProviderElement(this);
|
||||
return _GetPopularProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetPopularMangaProvider &&
|
||||
return other is GetPopularProvider &&
|
||||
other.source == source &&
|
||||
other.page == page;
|
||||
}
|
||||
|
|
@ -154,7 +154,7 @@ class GetPopularMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
}
|
||||
}
|
||||
|
||||
mixin GetPopularMangaRef on AutoDisposeFutureProviderRef<MPages?> {
|
||||
mixin GetPopularRef on AutoDisposeFutureProviderRef<MPages?> {
|
||||
/// The parameter `source` of this provider.
|
||||
Source get source;
|
||||
|
||||
|
|
@ -162,14 +162,14 @@ mixin GetPopularMangaRef on AutoDisposeFutureProviderRef<MPages?> {
|
|||
int get page;
|
||||
}
|
||||
|
||||
class _GetPopularMangaProviderElement
|
||||
extends AutoDisposeFutureProviderElement<MPages?> with GetPopularMangaRef {
|
||||
_GetPopularMangaProviderElement(super.provider);
|
||||
class _GetPopularProviderElement
|
||||
extends AutoDisposeFutureProviderElement<MPages?> with GetPopularRef {
|
||||
_GetPopularProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Source get source => (origin as GetPopularMangaProvider).source;
|
||||
Source get source => (origin as GetPopularProvider).source;
|
||||
@override
|
||||
int get page => (origin as GetPopularMangaProvider).page;
|
||||
int get page => (origin as GetPopularProvider).page;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'package:mangayomi/eval/model/source_provider.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/eval/compiler/compiler.dart';
|
||||
import 'package:mangayomi/models/chapter.dart';
|
||||
import 'package:mangayomi/models/video.dart';
|
||||
|
|
@ -9,11 +9,11 @@ import 'package:mangayomi/providers/storage_provider.dart';
|
|||
import 'package:mangayomi/sources/utils/utils.dart';
|
||||
import 'package:mangayomi/sources/source_test.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'get_anime_servers.g.dart';
|
||||
part 'get_video_list.g.dart';
|
||||
|
||||
@riverpod
|
||||
Future<(List<Video>, bool)> getAnimeServers(
|
||||
GetAnimeServersRef ref, {
|
||||
Future<(List<Video>, bool)> getVideoList(
|
||||
GetVideoListRef ref, {
|
||||
required Chapter episode,
|
||||
}) async {
|
||||
final storageProvider = StorageProvider();
|
||||
|
|
@ -33,7 +33,7 @@ Future<(List<Video>, bool)> getAnimeServers(
|
|||
final runtime = runtimeEval(bytecode);
|
||||
|
||||
var res = runtime.executeLib('package:mangayomi/main.dart', 'main');
|
||||
final dd = (await (res as MSourceProvider)
|
||||
.getVideoList(source.toMSource(), episode.url!));
|
||||
final dd =
|
||||
(await (res as MProvider).getVideoList(source.toMSource(), episode.url!));
|
||||
return (dd, false);
|
||||
}
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'get_anime_servers.dart';
|
||||
part of 'get_video_list.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getAnimeServersHash() => r'52f2430695b5d250be23d18725ae21ca5753376c';
|
||||
String _$getVideoListHash() => r'924c2961d148f9ebb0952239c0528d5269a4526a';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -29,27 +29,27 @@ class _SystemHash {
|
|||
}
|
||||
}
|
||||
|
||||
/// See also [getAnimeServers].
|
||||
@ProviderFor(getAnimeServers)
|
||||
const getAnimeServersProvider = GetAnimeServersFamily();
|
||||
/// See also [getVideoList].
|
||||
@ProviderFor(getVideoList)
|
||||
const getVideoListProvider = GetVideoListFamily();
|
||||
|
||||
/// See also [getAnimeServers].
|
||||
class GetAnimeServersFamily extends Family<AsyncValue<(List<Video>, bool)>> {
|
||||
/// See also [getAnimeServers].
|
||||
const GetAnimeServersFamily();
|
||||
/// See also [getVideoList].
|
||||
class GetVideoListFamily extends Family<AsyncValue<(List<Video>, bool)>> {
|
||||
/// See also [getVideoList].
|
||||
const GetVideoListFamily();
|
||||
|
||||
/// See also [getAnimeServers].
|
||||
GetAnimeServersProvider call({
|
||||
/// See also [getVideoList].
|
||||
GetVideoListProvider call({
|
||||
required Chapter episode,
|
||||
}) {
|
||||
return GetAnimeServersProvider(
|
||||
return GetVideoListProvider(
|
||||
episode: episode,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
GetAnimeServersProvider getProviderOverride(
|
||||
covariant GetAnimeServersProvider provider,
|
||||
GetVideoListProvider getProviderOverride(
|
||||
covariant GetVideoListProvider provider,
|
||||
) {
|
||||
return call(
|
||||
episode: provider.episode,
|
||||
|
|
@ -68,33 +68,33 @@ class GetAnimeServersFamily extends Family<AsyncValue<(List<Video>, bool)>> {
|
|||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'getAnimeServersProvider';
|
||||
String? get name => r'getVideoListProvider';
|
||||
}
|
||||
|
||||
/// See also [getAnimeServers].
|
||||
class GetAnimeServersProvider
|
||||
/// See also [getVideoList].
|
||||
class GetVideoListProvider
|
||||
extends AutoDisposeFutureProvider<(List<Video>, bool)> {
|
||||
/// See also [getAnimeServers].
|
||||
GetAnimeServersProvider({
|
||||
/// See also [getVideoList].
|
||||
GetVideoListProvider({
|
||||
required Chapter episode,
|
||||
}) : this._internal(
|
||||
(ref) => getAnimeServers(
|
||||
ref as GetAnimeServersRef,
|
||||
(ref) => getVideoList(
|
||||
ref as GetVideoListRef,
|
||||
episode: episode,
|
||||
),
|
||||
from: getAnimeServersProvider,
|
||||
name: r'getAnimeServersProvider',
|
||||
from: getVideoListProvider,
|
||||
name: r'getVideoListProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$getAnimeServersHash,
|
||||
dependencies: GetAnimeServersFamily._dependencies,
|
||||
: _$getVideoListHash,
|
||||
dependencies: GetVideoListFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
GetAnimeServersFamily._allTransitiveDependencies,
|
||||
GetVideoListFamily._allTransitiveDependencies,
|
||||
episode: episode,
|
||||
);
|
||||
|
||||
GetAnimeServersProvider._internal(
|
||||
GetVideoListProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
|
|
@ -108,12 +108,12 @@ class GetAnimeServersProvider
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<(List<Video>, bool)> Function(GetAnimeServersRef provider) create,
|
||||
FutureOr<(List<Video>, bool)> Function(GetVideoListRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: GetAnimeServersProvider._internal(
|
||||
(ref) => create(ref as GetAnimeServersRef),
|
||||
override: GetVideoListProvider._internal(
|
||||
(ref) => create(ref as GetVideoListRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
|
|
@ -126,12 +126,12 @@ class GetAnimeServersProvider
|
|||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<(List<Video>, bool)> createElement() {
|
||||
return _GetAnimeServersProviderElement(this);
|
||||
return _GetVideoListProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is GetAnimeServersProvider && other.episode == episode;
|
||||
return other is GetVideoListProvider && other.episode == episode;
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -143,18 +143,18 @@ class GetAnimeServersProvider
|
|||
}
|
||||
}
|
||||
|
||||
mixin GetAnimeServersRef on AutoDisposeFutureProviderRef<(List<Video>, bool)> {
|
||||
mixin GetVideoListRef on AutoDisposeFutureProviderRef<(List<Video>, bool)> {
|
||||
/// The parameter `episode` of this provider.
|
||||
Chapter get episode;
|
||||
}
|
||||
|
||||
class _GetAnimeServersProviderElement
|
||||
class _GetVideoListProviderElement
|
||||
extends AutoDisposeFutureProviderElement<(List<Video>, bool)>
|
||||
with GetAnimeServersRef {
|
||||
_GetAnimeServersProviderElement(super.provider);
|
||||
with GetVideoListRef {
|
||||
_GetVideoListProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Chapter get episode => (origin as GetAnimeServersProvider).episode;
|
||||
Chapter get episode => (origin as GetVideoListProvider).episode;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
import 'package:mangayomi/eval/model/m_pages.dart';
|
||||
import 'package:mangayomi/eval/compiler/compiler.dart';
|
||||
import 'package:mangayomi/eval/model/source_provider.dart';
|
||||
import 'package:mangayomi/eval/model/m_provider.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/eval/runtime/runtime.dart';
|
||||
import 'package:mangayomi/sources/source_test.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'search_manga.g.dart';
|
||||
part 'search.g.dart';
|
||||
|
||||
@riverpod
|
||||
Future<MPages?> searchManga(
|
||||
SearchMangaRef ref, {
|
||||
Future<MPages?> search(
|
||||
SearchRef ref, {
|
||||
required Source source,
|
||||
required String query,
|
||||
required int page,
|
||||
|
|
@ -20,7 +20,7 @@ Future<MPages?> searchManga(
|
|||
final runtime = runtimeEval(bytecode);
|
||||
var res = runtime.executeLib('package:mangayomi/main.dart', 'main');
|
||||
try {
|
||||
manga = await (res as MSourceProvider)
|
||||
manga = await (res as MProvider)
|
||||
.search(source.toMSource(), query, page);
|
||||
} catch (e) {
|
||||
throw Exception(e);
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'search_manga.dart';
|
||||
part of 'search.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$searchMangaHash() => r'f1a2af2f06c967c647ed803f8199de711a84bb49';
|
||||
String _$searchHash() => r'a387d6ddc86044bba9c8264c8bec6c1c29393ac5';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -29,22 +29,22 @@ class _SystemHash {
|
|||
}
|
||||
}
|
||||
|
||||
/// See also [searchManga].
|
||||
@ProviderFor(searchManga)
|
||||
const searchMangaProvider = SearchMangaFamily();
|
||||
/// See also [search].
|
||||
@ProviderFor(search)
|
||||
const searchProvider = SearchFamily();
|
||||
|
||||
/// See also [searchManga].
|
||||
class SearchMangaFamily extends Family<AsyncValue<MPages?>> {
|
||||
/// See also [searchManga].
|
||||
const SearchMangaFamily();
|
||||
/// See also [search].
|
||||
class SearchFamily extends Family<AsyncValue<MPages?>> {
|
||||
/// See also [search].
|
||||
const SearchFamily();
|
||||
|
||||
/// See also [searchManga].
|
||||
SearchMangaProvider call({
|
||||
/// See also [search].
|
||||
SearchProvider call({
|
||||
required Source source,
|
||||
required String query,
|
||||
required int page,
|
||||
}) {
|
||||
return SearchMangaProvider(
|
||||
return SearchProvider(
|
||||
source: source,
|
||||
query: query,
|
||||
page: page,
|
||||
|
|
@ -52,8 +52,8 @@ class SearchMangaFamily extends Family<AsyncValue<MPages?>> {
|
|||
}
|
||||
|
||||
@override
|
||||
SearchMangaProvider getProviderOverride(
|
||||
covariant SearchMangaProvider provider,
|
||||
SearchProvider getProviderOverride(
|
||||
covariant SearchProvider provider,
|
||||
) {
|
||||
return call(
|
||||
source: provider.source,
|
||||
|
|
@ -74,38 +74,37 @@ class SearchMangaFamily extends Family<AsyncValue<MPages?>> {
|
|||
_allTransitiveDependencies;
|
||||
|
||||
@override
|
||||
String? get name => r'searchMangaProvider';
|
||||
String? get name => r'searchProvider';
|
||||
}
|
||||
|
||||
/// See also [searchManga].
|
||||
class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
||||
/// See also [searchManga].
|
||||
SearchMangaProvider({
|
||||
/// See also [search].
|
||||
class SearchProvider extends AutoDisposeFutureProvider<MPages?> {
|
||||
/// See also [search].
|
||||
SearchProvider({
|
||||
required Source source,
|
||||
required String query,
|
||||
required int page,
|
||||
}) : this._internal(
|
||||
(ref) => searchManga(
|
||||
ref as SearchMangaRef,
|
||||
(ref) => search(
|
||||
ref as SearchRef,
|
||||
source: source,
|
||||
query: query,
|
||||
page: page,
|
||||
),
|
||||
from: searchMangaProvider,
|
||||
name: r'searchMangaProvider',
|
||||
from: searchProvider,
|
||||
name: r'searchProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$searchMangaHash,
|
||||
dependencies: SearchMangaFamily._dependencies,
|
||||
allTransitiveDependencies:
|
||||
SearchMangaFamily._allTransitiveDependencies,
|
||||
: _$searchHash,
|
||||
dependencies: SearchFamily._dependencies,
|
||||
allTransitiveDependencies: SearchFamily._allTransitiveDependencies,
|
||||
source: source,
|
||||
query: query,
|
||||
page: page,
|
||||
);
|
||||
|
||||
SearchMangaProvider._internal(
|
||||
SearchProvider._internal(
|
||||
super._createNotifier, {
|
||||
required super.name,
|
||||
required super.dependencies,
|
||||
|
|
@ -123,12 +122,12 @@ class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
|
||||
@override
|
||||
Override overrideWith(
|
||||
FutureOr<MPages?> Function(SearchMangaRef provider) create,
|
||||
FutureOr<MPages?> Function(SearchRef provider) create,
|
||||
) {
|
||||
return ProviderOverride(
|
||||
origin: this,
|
||||
override: SearchMangaProvider._internal(
|
||||
(ref) => create(ref as SearchMangaRef),
|
||||
override: SearchProvider._internal(
|
||||
(ref) => create(ref as SearchRef),
|
||||
from: from,
|
||||
name: null,
|
||||
dependencies: null,
|
||||
|
|
@ -143,12 +142,12 @@ class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
|
||||
@override
|
||||
AutoDisposeFutureProviderElement<MPages?> createElement() {
|
||||
return _SearchMangaProviderElement(this);
|
||||
return _SearchProviderElement(this);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return other is SearchMangaProvider &&
|
||||
return other is SearchProvider &&
|
||||
other.source == source &&
|
||||
other.query == query &&
|
||||
other.page == page;
|
||||
|
|
@ -165,7 +164,7 @@ class SearchMangaProvider extends AutoDisposeFutureProvider<MPages?> {
|
|||
}
|
||||
}
|
||||
|
||||
mixin SearchMangaRef on AutoDisposeFutureProviderRef<MPages?> {
|
||||
mixin SearchRef on AutoDisposeFutureProviderRef<MPages?> {
|
||||
/// The parameter `source` of this provider.
|
||||
Source get source;
|
||||
|
||||
|
|
@ -176,16 +175,16 @@ mixin SearchMangaRef on AutoDisposeFutureProviderRef<MPages?> {
|
|||
int get page;
|
||||
}
|
||||
|
||||
class _SearchMangaProviderElement
|
||||
extends AutoDisposeFutureProviderElement<MPages?> with SearchMangaRef {
|
||||
_SearchMangaProviderElement(super.provider);
|
||||
class _SearchProviderElement extends AutoDisposeFutureProviderElement<MPages?>
|
||||
with SearchRef {
|
||||
_SearchProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
Source get source => (origin as SearchMangaProvider).source;
|
||||
Source get source => (origin as SearchProvider).source;
|
||||
@override
|
||||
String get query => (origin as SearchMangaProvider).query;
|
||||
String get query => (origin as SearchProvider).query;
|
||||
@override
|
||||
int get page => (origin as SearchMangaProvider).page;
|
||||
int get page => (origin as SearchProvider).page;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
Loading…
Reference in a new issue