mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-01-11 22:40:36 +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/l10n/generated/app_localizations.dart';
|
||||||
import 'package:mangayomi/services/http/m_client.dart';
|
import 'package:mangayomi/services/http/m_client.dart';
|
||||||
import 'package:mangayomi/services/isolate_service.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/src/rust/frb_generated.dart';
|
||||||
import 'package:mangayomi/utils/discord_rpc.dart';
|
import 'package:mangayomi/utils/discord_rpc.dart';
|
||||||
import 'package:mangayomi/utils/log/logger.dart';
|
import 'package:mangayomi/utils/log/logger.dart';
|
||||||
|
|
@ -118,6 +119,7 @@ class _MyAppState extends ConsumerState<MyApp> {
|
||||||
unawaited(ref.read(scanLocalLibraryProvider.future));
|
unawaited(ref.read(scanLocalLibraryProvider.future));
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
MExtensionServerPlatform(ref).startServer();
|
||||||
if (ref.read(clearChapterCacheOnAppLaunchStateProvider)) {
|
if (ref.read(clearChapterCacheOnAppLaunchStateProvider)) {
|
||||||
// Watch before calling clearcache to keep it alive, so that _getTotalDiskSpace completes safely
|
// Watch before calling clearcache to keep it alive, so that _getTotalDiskSpace completes safely
|
||||||
ref.watch(totalChapterCacheSizeStateProvider);
|
ref.watch(totalChapterCacheSizeStateProvider);
|
||||||
|
|
@ -157,6 +159,7 @@ class _MyAppState extends ConsumerState<MyApp> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
|
MExtensionServerPlatform(ref).stopServer();
|
||||||
_linkSubscription?.cancel();
|
_linkSubscription?.cancel();
|
||||||
discordRpc?.destroy();
|
discordRpc?.destroy();
|
||||||
stopCfResolutionWebviewServer();
|
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 <flutter_qjs/flutter_qjs_plugin.h>
|
||||||
#include <gtk/gtk_plugin.h>
|
#include <gtk/gtk_plugin.h>
|
||||||
#include <isar_community_flutter_libs/isar_flutter_libs_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_libs_linux/media_kit_libs_linux_plugin.h>
|
||||||
#include <media_kit_video/media_kit_video_plugin.h>
|
#include <media_kit_video/media_kit_video_plugin.h>
|
||||||
#include <screen_retriever_linux/screen_retriever_linux_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 =
|
g_autoptr(FlPluginRegistrar) isar_community_flutter_libs_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin");
|
||||||
isar_flutter_libs_plugin_register_with_registrar(isar_community_flutter_libs_registrar);
|
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 =
|
g_autoptr(FlPluginRegistrar) media_kit_libs_linux_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitLibsLinuxPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitLibsLinuxPlugin");
|
||||||
media_kit_libs_linux_plugin_register_with_registrar(media_kit_libs_linux_registrar);
|
media_kit_libs_linux_plugin_register_with_registrar(media_kit_libs_linux_registrar);
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
flutter_qjs
|
flutter_qjs
|
||||||
gtk
|
gtk
|
||||||
isar_community_flutter_libs
|
isar_community_flutter_libs
|
||||||
|
m_extension_server
|
||||||
media_kit_libs_linux
|
media_kit_libs_linux
|
||||||
media_kit_video
|
media_kit_video
|
||||||
screen_retriever_linux
|
screen_retriever_linux
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import flutter_inappwebview_macos
|
||||||
import flutter_qjs
|
import flutter_qjs
|
||||||
import flutter_web_auth_2
|
import flutter_web_auth_2
|
||||||
import isar_community_flutter_libs
|
import isar_community_flutter_libs
|
||||||
|
import m_extension_server
|
||||||
import media_kit_libs_macos_video
|
import media_kit_libs_macos_video
|
||||||
import media_kit_video
|
import media_kit_video
|
||||||
import package_info_plus
|
import package_info_plus
|
||||||
|
|
@ -35,6 +36,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
FlutterQjsPlugin.register(with: registry.registrar(forPlugin: "FlutterQjsPlugin"))
|
FlutterQjsPlugin.register(with: registry.registrar(forPlugin: "FlutterQjsPlugin"))
|
||||||
FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin"))
|
FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin"))
|
||||||
IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin"))
|
IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin"))
|
||||||
|
MExtensionServerPlugin.register(with: registry.registrar(forPlugin: "MExtensionServerPlugin"))
|
||||||
MediaKitLibsMacosVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitLibsMacosVideoPlugin"))
|
MediaKitLibsMacosVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitLibsMacosVideoPlugin"))
|
||||||
MediaKitVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitVideoPlugin"))
|
MediaKitVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitVideoPlugin"))
|
||||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ PODS:
|
||||||
- FlutterMacOS (1.0.0)
|
- FlutterMacOS (1.0.0)
|
||||||
- isar_community_flutter_libs (1.0.0):
|
- isar_community_flutter_libs (1.0.0):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
|
- m_extension_server (0.0.1):
|
||||||
|
- FlutterMacOS
|
||||||
- media_kit_libs_macos_video (1.0.4):
|
- media_kit_libs_macos_video (1.0.4):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- media_kit_video (0.0.1):
|
- 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`)
|
- flutter_web_auth_2 (from `Flutter/ephemeral/.symlinks/plugins/flutter_web_auth_2/macos`)
|
||||||
- FlutterMacOS (from `Flutter/ephemeral`)
|
- FlutterMacOS (from `Flutter/ephemeral`)
|
||||||
- isar_community_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/isar_community_flutter_libs/macos`)
|
- 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_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`)
|
- media_kit_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_video/macos`)
|
||||||
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
|
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
|
||||||
|
|
@ -98,6 +101,8 @@ EXTERNAL SOURCES:
|
||||||
:path: Flutter/ephemeral
|
:path: Flutter/ephemeral
|
||||||
isar_community_flutter_libs:
|
isar_community_flutter_libs:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/isar_community_flutter_libs/macos
|
: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:
|
media_kit_libs_macos_video:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos
|
||||||
media_kit_video:
|
media_kit_video:
|
||||||
|
|
@ -136,6 +141,7 @@ SPEC CHECKSUMS:
|
||||||
flutter_web_auth_2: 62b08da29f15a20fa63f144234622a1488d45b65
|
flutter_web_auth_2: 62b08da29f15a20fa63f144234622a1488d45b65
|
||||||
FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1
|
FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1
|
||||||
isar_community_flutter_libs: a631ceb5622413b56bcd0a8bf49cb55bf3d8bb2b
|
isar_community_flutter_libs: a631ceb5622413b56bcd0a8bf49cb55bf3d8bb2b
|
||||||
|
m_extension_server: 50e95a61bbf93c9a33ddc812d0753bddf1c01456
|
||||||
media_kit_libs_macos_video: 85a23e549b5f480e72cae3e5634b5514bc692f65
|
media_kit_libs_macos_video: 85a23e549b5f480e72cae3e5634b5514bc692f65
|
||||||
media_kit_video: fa6564e3799a0a28bff39442334817088b7ca758
|
media_kit_video: fa6564e3799a0a28bff39442334817088b7ca758
|
||||||
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
||||||
|
|
|
||||||
|
|
@ -978,6 +978,15 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
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:
|
marquee:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,10 @@ dependencies:
|
||||||
url: https://github.com/Schnitzel5/flutter-discord-rpc.git
|
url: https://github.com/Schnitzel5/flutter-discord-rpc.git
|
||||||
ref: main
|
ref: main
|
||||||
table_calendar: ^3.2.0
|
table_calendar: ^3.2.0
|
||||||
|
m_extension_server:
|
||||||
|
git:
|
||||||
|
url: https://github.com/kodjodevf/m_extension_server.git
|
||||||
|
ref: master
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
ffi: ^2.1.3
|
ffi: ^2.1.3
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
|
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
|
||||||
#include <flutter_qjs/flutter_qjs_plugin.h>
|
#include <flutter_qjs/flutter_qjs_plugin.h>
|
||||||
#include <isar_community_flutter_libs/isar_flutter_libs_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_libs_windows_video/media_kit_libs_windows_video_plugin_c_api.h>
|
||||||
#include <media_kit_video/media_kit_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>
|
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||||
|
|
@ -33,6 +34,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
registry->GetRegistrarForPlugin("FlutterQjsPlugin"));
|
registry->GetRegistrarForPlugin("FlutterQjsPlugin"));
|
||||||
IsarFlutterLibsPluginRegisterWithRegistrar(
|
IsarFlutterLibsPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
|
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
|
||||||
|
MExtensionServerPluginCApiRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("MExtensionServerPluginCApi"));
|
||||||
MediaKitLibsWindowsVideoPluginCApiRegisterWithRegistrar(
|
MediaKitLibsWindowsVideoPluginCApiRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("MediaKitLibsWindowsVideoPluginCApi"));
|
registry->GetRegistrarForPlugin("MediaKitLibsWindowsVideoPluginCApi"));
|
||||||
MediaKitVideoPluginCApiRegisterWithRegistrar(
|
MediaKitVideoPluginCApiRegisterWithRegistrar(
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
flutter_inappwebview_windows
|
flutter_inappwebview_windows
|
||||||
flutter_qjs
|
flutter_qjs
|
||||||
isar_community_flutter_libs
|
isar_community_flutter_libs
|
||||||
|
m_extension_server
|
||||||
media_kit_libs_windows_video
|
media_kit_libs_windows_video
|
||||||
media_kit_video
|
media_kit_video
|
||||||
permission_handler_windows
|
permission_handler_windows
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue