mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-20 15:02:07 +00:00
fix: enable logger usage in isolate service
This commit is contained in:
parent
daa205044f
commit
29fe96151d
5 changed files with 110 additions and 65 deletions
|
|
@ -3,6 +3,7 @@ import 'dart:io';
|
|||
import 'dart:typed_data';
|
||||
|
||||
import 'package:epubx/epubx.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_qjs/flutter_qjs.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:path/path.dart' as p;
|
||||
|
|
@ -25,7 +26,12 @@ class JsUtils {
|
|||
}
|
||||
|
||||
runtime.onMessage('log', (dynamic args) {
|
||||
Logger.add(LoggerLevel.warning, "${args[0]}");
|
||||
if (kDebugMode || useLogger) {
|
||||
// ignore: avoid_print
|
||||
print("LoggerLevel.warning:${args[0]}");
|
||||
Logger.add(LoggerLevel.warning, "${args[0]}");
|
||||
}
|
||||
|
||||
return null;
|
||||
});
|
||||
runtime.onMessage('cryptoHandler', (dynamic args) {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_qjs/flutter_qjs.dart';
|
||||
import 'package:mangayomi/utils/log/log.dart';
|
||||
|
||||
|
|
@ -7,7 +8,11 @@ class JsLibs {
|
|||
|
||||
void init() {
|
||||
runtime.onMessage('log', (dynamic args) {
|
||||
Logger.add(LoggerLevel.warning, "${args[0]}");
|
||||
if (kDebugMode || useLogger) {
|
||||
// ignore: avoid_print
|
||||
print("LoggerLevel.warning:${args[0]}");
|
||||
Logger.add(LoggerLevel.warning, "${args[0]}");
|
||||
}
|
||||
return null;
|
||||
});
|
||||
runtime.onMessage('urlencode', (dynamic args) {
|
||||
|
|
|
|||
|
|
@ -489,6 +489,7 @@ class _CodeEditorPageState extends ConsumerState<CodeEditorPage> {
|
|||
proxyServer: ref.read(
|
||||
androidProxyServerStateProvider,
|
||||
),
|
||||
useLogger: true,
|
||||
);
|
||||
result = getManga!.toJson();
|
||||
} else if (_serviceIndex == 1) {
|
||||
|
|
@ -502,6 +503,7 @@ class _CodeEditorPageState extends ConsumerState<CodeEditorPage> {
|
|||
proxyServer: ref.read(
|
||||
androidProxyServerStateProvider,
|
||||
),
|
||||
useLogger: true,
|
||||
);
|
||||
result = getManga!.toJson();
|
||||
} else if (_serviceIndex == 2) {
|
||||
|
|
@ -514,6 +516,7 @@ class _CodeEditorPageState extends ConsumerState<CodeEditorPage> {
|
|||
page: _page,
|
||||
serviceType: 'search',
|
||||
proxyServer: proxyServer,
|
||||
useLogger: true,
|
||||
);
|
||||
result = getManga!.toJson();
|
||||
} else if (_serviceIndex == 3) {
|
||||
|
|
@ -524,6 +527,7 @@ class _CodeEditorPageState extends ConsumerState<CodeEditorPage> {
|
|||
source: source,
|
||||
serviceType: 'getDetail',
|
||||
proxyServer: proxyServer,
|
||||
useLogger: true,
|
||||
);
|
||||
|
||||
result = getManga.toJson();
|
||||
|
|
|
|||
|
|
@ -210,10 +210,10 @@ class LoggerInterceptor extends InterceptorContract {
|
|||
Future<BaseRequest> interceptRequest({required BaseRequest request}) async {
|
||||
final content =
|
||||
"----- Request -----\n${request.toString()}\nheaders: ${request.headers.toString()}";
|
||||
if (kDebugMode) {
|
||||
|
||||
if (kDebugMode || useLogger) {
|
||||
// ignore: avoid_print
|
||||
print(content);
|
||||
}
|
||||
if (useLogger) {
|
||||
Logger.add(LoggerLevel.info, content);
|
||||
}
|
||||
|
||||
|
|
@ -228,10 +228,10 @@ class LoggerInterceptor extends InterceptorContract {
|
|||
final cloudflare = isCloudflare(response);
|
||||
final content =
|
||||
"----- Response -----\n${response.request?.method}: ${response.request?.url}, statusCode: ${response.statusCode} ${cloudflare ? "Failed to bypass Cloudflare" : ""}";
|
||||
if (kDebugMode) {
|
||||
|
||||
if (kDebugMode || useLogger) {
|
||||
// ignore: avoid_print
|
||||
print(content);
|
||||
}
|
||||
if (useLogger) {
|
||||
Logger.add(LoggerLevel.info, content);
|
||||
}
|
||||
if (cloudflare) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import 'package:mangayomi/eval/lib.dart';
|
|||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/providers/storage_provider.dart';
|
||||
import 'package:mangayomi/utils/log/log.dart';
|
||||
|
||||
class _IsolateData {
|
||||
final SendPort sendPort;
|
||||
|
|
@ -49,6 +50,19 @@ class GetIsolateService {
|
|||
if (message is SendPort) {
|
||||
completer.complete(message);
|
||||
}
|
||||
if (message is String) {
|
||||
if (message.startsWith('LoggerLevel.warning:')) {
|
||||
Logger.add(
|
||||
LoggerLevel.warning,
|
||||
message.replaceFirst('LoggerLevel.warning:', ''),
|
||||
);
|
||||
} else {
|
||||
Logger.add(LoggerLevel.info, message);
|
||||
}
|
||||
if (kDebugMode) {
|
||||
print(message.replaceFirst('LoggerLevel.warning:', ''));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
_sendPort = await completer.future;
|
||||
|
|
@ -67,65 +81,79 @@ class GetIsolateService {
|
|||
isar = await StorageProvider().initDB(null, inspector: kDebugMode);
|
||||
|
||||
final receivePort = ReceivePort();
|
||||
isolateData.sendPort.send(receivePort.sendPort);
|
||||
Zone.current
|
||||
.fork(
|
||||
specification: ZoneSpecification(
|
||||
print: (self, parent, zone, line) {
|
||||
isolateData.sendPort.send(line);
|
||||
},
|
||||
),
|
||||
)
|
||||
.run(() async {
|
||||
isolateData.sendPort.send(receivePort.sendPort);
|
||||
|
||||
await for (var message in receivePort) {
|
||||
if (message is Map<String, dynamic>) {
|
||||
try {
|
||||
final url = message['url'] as String?;
|
||||
final page = message['page'] as int?;
|
||||
final query = message['query'] as String?;
|
||||
final filterList = message['filterList'] as List?;
|
||||
final source = message['source'] as Source?;
|
||||
final proxyServer = message['proxyServer'] as String?;
|
||||
final serviceType = message['serviceType'] as String?;
|
||||
final responsePort = message['responsePort'] as SendPort;
|
||||
|
||||
if (serviceType == 'getDetail') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getDetail(url!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getPopular') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getPopular(page!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getLatestUpdates') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getLatestUpdates(page!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'search') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).search(query!, page!, filterList!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getVideoList') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getVideoList(url!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getPageList') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getPageList(url!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
await for (var message in receivePort) {
|
||||
if (message is Map<String, dynamic>) {
|
||||
try {
|
||||
final url = message['url'] as String?;
|
||||
final page = message['page'] as int?;
|
||||
final query = message['query'] as String?;
|
||||
final filterList = message['filterList'] as List?;
|
||||
final source = message['source'] as Source?;
|
||||
final proxyServer = message['proxyServer'] as String?;
|
||||
final serviceType = message['serviceType'] as String?;
|
||||
final useLoggerValue = message['useLogger'] as bool?;
|
||||
final responsePort = message['responsePort'] as SendPort;
|
||||
if (useLoggerValue != null) {
|
||||
useLogger = useLoggerValue;
|
||||
}
|
||||
if (serviceType == 'getDetail') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getDetail(url!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getPopular') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getPopular(page!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getLatestUpdates') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getLatestUpdates(page!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'search') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).search(query!, page!, filterList!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getVideoList') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getVideoList(url!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
} else if (serviceType == 'getPageList') {
|
||||
final result = await getExtensionService(
|
||||
source!,
|
||||
proxyServer ?? '',
|
||||
).getPageList(url!);
|
||||
responsePort.send({'success': true, 'data': result});
|
||||
}
|
||||
} catch (e) {
|
||||
final responsePort = message['responsePort'] as SendPort;
|
||||
responsePort.send({'success': false, 'error': e.toString()});
|
||||
}
|
||||
useLogger = false;
|
||||
} else if (message == 'dispose') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
final responsePort = message['responsePort'] as SendPort;
|
||||
responsePort.send({'success': false, 'error': e.toString()});
|
||||
}
|
||||
} else if (message == 'dispose') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Future<T> get<T>({
|
||||
|
|
@ -138,6 +166,7 @@ class GetIsolateService {
|
|||
String? proxyServer,
|
||||
bool? autoUpdateExtensions,
|
||||
String? androidProxyServer,
|
||||
bool? useLogger,
|
||||
}) async {
|
||||
if (_sendPort == null) {
|
||||
throw Exception('Isolate not running');
|
||||
|
|
@ -166,6 +195,7 @@ class GetIsolateService {
|
|||
'source': source,
|
||||
'proxyServer': proxyServer,
|
||||
'responsePort': responsePort.sendPort,
|
||||
'useLogger': useLogger,
|
||||
});
|
||||
|
||||
return completer.future;
|
||||
|
|
|
|||
Loading…
Reference in a new issue