mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-03-11 17:25:32 +00:00
feat(server): add server check before starting
This commit is contained in:
parent
2cade3db56
commit
6e4d3dd52e
1 changed files with 32 additions and 9 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:m_extension_server/m_extension_server.dart';
|
||||
import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart';
|
||||
|
||||
|
|
@ -8,16 +9,36 @@ class MExtensionServerPlatform {
|
|||
WidgetRef ref;
|
||||
MExtensionServerPlatform(this.ref);
|
||||
|
||||
Future<bool> check() async {
|
||||
if (_baseUrl == "http://127.0.0.1:0") return false;
|
||||
try {
|
||||
final res = await http.get(Uri.parse("$_baseUrl/"));
|
||||
if (res.statusCode == 200) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} catch (_) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
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 (_) {}
|
||||
final isRunning = await check();
|
||||
if (!isRunning) {
|
||||
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 (e) {
|
||||
if (kDebugMode) {
|
||||
print(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> stopServer() async {
|
||||
|
|
@ -25,4 +46,6 @@ class MExtensionServerPlatform {
|
|||
await MExtensionServer().stopServer();
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
String get _baseUrl => ref.watch(androidProxyServerStateProvider);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue