mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-01-11 18:30:34 +00:00
feat(server): integrate MExtensionServer
This commit is contained in:
parent
85ff4d7d4c
commit
1b708d6884
10 changed files with 61 additions and 0 deletions
|
|
@ -33,6 +33,7 @@ import 'package:mangayomi/modules/more/settings/appearance/providers/theme_mode_
|
|||
import 'package:mangayomi/l10n/generated/app_localizations.dart';
|
||||
import 'package:mangayomi/services/http/m_client.dart';
|
||||
import 'package:mangayomi/services/isolate_service.dart';
|
||||
import 'package:mangayomi/services/m_extension_server.dart';
|
||||
import 'package:mangayomi/src/rust/frb_generated.dart';
|
||||
import 'package:mangayomi/utils/discord_rpc.dart';
|
||||
import 'package:mangayomi/utils/log/logger.dart';
|
||||
|
|
@ -118,6 +119,7 @@ class _MyAppState extends ConsumerState<MyApp> {
|
|||
unawaited(ref.read(scanLocalLibraryProvider.future));
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
MExtensionServerPlatform(ref).startServer();
|
||||
if (ref.read(clearChapterCacheOnAppLaunchStateProvider)) {
|
||||
// Watch before calling clearcache to keep it alive, so that _getTotalDiskSpace completes safely
|
||||
ref.watch(totalChapterCacheSizeStateProvider);
|
||||
|
|
@ -157,6 +159,7 @@ class _MyAppState extends ConsumerState<MyApp> {
|
|||
|
||||
@override
|
||||
void dispose() {
|
||||
MExtensionServerPlatform(ref).stopServer();
|
||||
_linkSubscription?.cancel();
|
||||
discordRpc?.destroy();
|
||||
stopCfResolutionWebviewServer();
|
||||
|
|
|
|||
28
lib/services/m_extension_server.dart
Normal file
28
lib/services/m_extension_server.dart
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:m_extension_server/m_extension_server.dart';
|
||||
import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart';
|
||||
|
||||
class MExtensionServerPlatform {
|
||||
WidgetRef ref;
|
||||
MExtensionServerPlatform(this.ref);
|
||||
|
||||
Future<void> startServer() async {
|
||||
try {
|
||||
final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0);
|
||||
final port = server.port;
|
||||
await server.close();
|
||||
await MExtensionServer().startServer(port);
|
||||
ref
|
||||
.read(androidProxyServerStateProvider.notifier)
|
||||
.set("http://127.0.0.1:$port");
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
Future<void> stopServer() async {
|
||||
try {
|
||||
await MExtensionServer().stopServer();
|
||||
} catch (_) {}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@
|
|||
#include <flutter_qjs/flutter_qjs_plugin.h>
|
||||
#include <gtk/gtk_plugin.h>
|
||||
#include <isar_community_flutter_libs/isar_flutter_libs_plugin.h>
|
||||
#include <m_extension_server/m_extension_server_plugin.h>
|
||||
#include <media_kit_libs_linux/media_kit_libs_linux_plugin.h>
|
||||
#include <media_kit_video/media_kit_video_plugin.h>
|
||||
#include <screen_retriever_linux/screen_retriever_linux_plugin.h>
|
||||
|
|
@ -31,6 +32,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
|
|||
g_autoptr(FlPluginRegistrar) isar_community_flutter_libs_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin");
|
||||
isar_flutter_libs_plugin_register_with_registrar(isar_community_flutter_libs_registrar);
|
||||
g_autoptr(FlPluginRegistrar) m_extension_server_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "MExtensionServerPlugin");
|
||||
m_extension_server_plugin_register_with_registrar(m_extension_server_registrar);
|
||||
g_autoptr(FlPluginRegistrar) media_kit_libs_linux_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitLibsLinuxPlugin");
|
||||
media_kit_libs_linux_plugin_register_with_registrar(media_kit_libs_linux_registrar);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||
flutter_qjs
|
||||
gtk
|
||||
isar_community_flutter_libs
|
||||
m_extension_server
|
||||
media_kit_libs_linux
|
||||
media_kit_video
|
||||
screen_retriever_linux
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import flutter_inappwebview_macos
|
|||
import flutter_qjs
|
||||
import flutter_web_auth_2
|
||||
import isar_community_flutter_libs
|
||||
import m_extension_server
|
||||
import media_kit_libs_macos_video
|
||||
import media_kit_video
|
||||
import package_info_plus
|
||||
|
|
@ -35,6 +36,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
|||
FlutterQjsPlugin.register(with: registry.registrar(forPlugin: "FlutterQjsPlugin"))
|
||||
FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin"))
|
||||
IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin"))
|
||||
MExtensionServerPlugin.register(with: registry.registrar(forPlugin: "MExtensionServerPlugin"))
|
||||
MediaKitLibsMacosVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitLibsMacosVideoPlugin"))
|
||||
MediaKitVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitVideoPlugin"))
|
||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ PODS:
|
|||
- FlutterMacOS (1.0.0)
|
||||
- isar_community_flutter_libs (1.0.0):
|
||||
- FlutterMacOS
|
||||
- m_extension_server (0.0.1):
|
||||
- FlutterMacOS
|
||||
- media_kit_libs_macos_video (1.0.4):
|
||||
- FlutterMacOS
|
||||
- media_kit_video (0.0.1):
|
||||
|
|
@ -59,6 +61,7 @@ DEPENDENCIES:
|
|||
- flutter_web_auth_2 (from `Flutter/ephemeral/.symlinks/plugins/flutter_web_auth_2/macos`)
|
||||
- FlutterMacOS (from `Flutter/ephemeral`)
|
||||
- isar_community_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/isar_community_flutter_libs/macos`)
|
||||
- m_extension_server (from `Flutter/ephemeral/.symlinks/plugins/m_extension_server/macos`)
|
||||
- media_kit_libs_macos_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos`)
|
||||
- media_kit_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_video/macos`)
|
||||
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
|
||||
|
|
@ -98,6 +101,8 @@ EXTERNAL SOURCES:
|
|||
:path: Flutter/ephemeral
|
||||
isar_community_flutter_libs:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/isar_community_flutter_libs/macos
|
||||
m_extension_server:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/m_extension_server/macos
|
||||
media_kit_libs_macos_video:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos
|
||||
media_kit_video:
|
||||
|
|
@ -136,6 +141,7 @@ SPEC CHECKSUMS:
|
|||
flutter_web_auth_2: 62b08da29f15a20fa63f144234622a1488d45b65
|
||||
FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1
|
||||
isar_community_flutter_libs: a631ceb5622413b56bcd0a8bf49cb55bf3d8bb2b
|
||||
m_extension_server: 50e95a61bbf93c9a33ddc812d0753bddf1c01456
|
||||
media_kit_libs_macos_video: 85a23e549b5f480e72cae3e5634b5514bc692f65
|
||||
media_kit_video: fa6564e3799a0a28bff39442334817088b7ca758
|
||||
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
||||
|
|
|
|||
|
|
@ -978,6 +978,15 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
m_extension_server:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
path: "."
|
||||
ref: master
|
||||
resolved-ref: dd07e87603cc2d6cb3fc42c37def4396741c4944
|
||||
url: "https://github.com/kodjodevf/m_extension_server.git"
|
||||
source: git
|
||||
version: "0.0.1"
|
||||
marquee:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -99,6 +99,10 @@ dependencies:
|
|||
url: https://github.com/Schnitzel5/flutter-discord-rpc.git
|
||||
ref: main
|
||||
table_calendar: ^3.2.0
|
||||
m_extension_server:
|
||||
git:
|
||||
url: https://github.com/kodjodevf/m_extension_server.git
|
||||
ref: master
|
||||
|
||||
dependency_overrides:
|
||||
ffi: ^2.1.3
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
|
||||
#include <flutter_qjs/flutter_qjs_plugin.h>
|
||||
#include <isar_community_flutter_libs/isar_flutter_libs_plugin.h>
|
||||
#include <m_extension_server/m_extension_server_plugin_c_api.h>
|
||||
#include <media_kit_libs_windows_video/media_kit_libs_windows_video_plugin_c_api.h>
|
||||
#include <media_kit_video/media_kit_video_plugin_c_api.h>
|
||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||
|
|
@ -33,6 +34,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
|||
registry->GetRegistrarForPlugin("FlutterQjsPlugin"));
|
||||
IsarFlutterLibsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
|
||||
MExtensionServerPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("MExtensionServerPluginCApi"));
|
||||
MediaKitLibsWindowsVideoPluginCApiRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("MediaKitLibsWindowsVideoPluginCApi"));
|
||||
MediaKitVideoPluginCApiRegisterWithRegistrar(
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||
flutter_inappwebview_windows
|
||||
flutter_qjs
|
||||
isar_community_flutter_libs
|
||||
m_extension_server
|
||||
media_kit_libs_windows_video
|
||||
media_kit_video
|
||||
permission_handler_windows
|
||||
|
|
|
|||
Loading…
Reference in a new issue