This commit is contained in:
Moustapha Kodjo Amadou 2025-10-22 10:51:25 +01:00
parent 7c47d19a70
commit 2ff20c35cc
3 changed files with 22 additions and 3 deletions

View file

@ -19,10 +19,12 @@ class JsExtensionService implements ExtensionService {
late JavascriptRuntime runtime;
@override
late Source source;
bool _isInitialized = false;
JsExtensionService(this.source);
void _init() {
if (_isInitialized) return;
runtime = getJavascriptRuntime();
JsHttpClient(runtime).init();
JsDomSelector(runtime).init();
@ -79,6 +81,7 @@ async function jsonStringify(fn) {
runtime.evaluate('''${source.sourceCode}
var extention = new DefaultExtension();
''');
_isInitialized = true;
}
@override

View file

@ -31,10 +31,12 @@ class LNReaderExtensionService implements ExtensionService {
late JavascriptRuntime runtime;
@override
late Source source;
bool _isInitialized = false;
LNReaderExtensionService(this.source);
void _init() {
if (_isInitialized) return;
runtime = getJavascriptRuntime();
runtime.evaluate('''
module={},exports=Function("return this")(),Object.defineProperties(module,{namespace:{set:function(a){exports=a}},exports:{set:function(a){for(var b in a)a.hasOwnProperty(b)&&(exports[b]=a[b])},get:function(){return exports}}});
@ -83,6 +85,7 @@ const require = (package) => {
${source.sourceCode}
const extension = exports.default;
''');
_isInitialized = true;
}
@override

View file

@ -51,13 +51,26 @@ import 'package:path/path.dart' as p;
typedef DoubleClickAnimationListener = void Function();
class MangaReaderView extends ConsumerWidget {
class MangaReaderView extends ConsumerStatefulWidget {
final int chapterId;
const MangaReaderView({super.key, required this.chapterId});
@override
Widget build(BuildContext context, WidgetRef ref) {
final chapterData = ref.watch(mangaReaderProvider(chapterId));
ConsumerState<MangaReaderView> createState() => _MangaReaderViewState();
}
class _MangaReaderViewState extends ConsumerState<MangaReaderView> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
ref.invalidate(mangaReaderProvider(widget.chapterId));
});
}
@override
Widget build(BuildContext context) {
final chapterData = ref.watch(mangaReaderProvider(widget.chapterId));
return chapterData.when(
loading: () => scaffoldWith(context, const ProgressCenter()),