|
@@ -2,6 +2,7 @@ import 'dart:io';
|
|
|
import 'package:flutter/widgets.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'package:naiyouwl/app/bean/proxie.dart';
|
|
|
+import 'package:naiyouwl/app/component/dialogs.dart';
|
|
|
import 'package:naiyouwl/app/controller/controllers.dart';
|
|
|
import 'package:naiyouwl/app/data/model/NodeMode.dart';
|
|
|
import 'package:naiyouwl/app/network/api_service.dart';
|
|
@@ -16,6 +17,9 @@ class GlobalController extends GetxController {
|
|
|
|
|
|
late BuildContext context;
|
|
|
final List<String> modes = ['rule', 'global'];
|
|
|
+ final List<String> routeModes = ['sys', 'tun'];
|
|
|
+
|
|
|
+ var routeModesSelect = "sys".obs;
|
|
|
var nodeModes = <NodeMode>[].obs;
|
|
|
var isLoading = false.obs;
|
|
|
var errorMsg = ''.obs;
|
|
@@ -55,9 +59,9 @@ class GlobalController extends GetxController {
|
|
|
|
|
|
await controllers.service.initConfig();
|
|
|
|
|
|
- await controllers.service.startService();
|
|
|
+ await controllers.service.install();
|
|
|
if (controllers.service.serviceStatus.value != RunningState.running) return;
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -68,16 +72,64 @@ class GlobalController extends GetxController {
|
|
|
initRegularlyUpdate();
|
|
|
}
|
|
|
|
|
|
+ Future<void> updateRoute(String route) async {
|
|
|
+ if(allowStatusUpdate){
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ routeModesSelect.value = route;
|
|
|
+ }
|
|
|
Future<void> fetchNodes() async {
|
|
|
nodeModes.value = await ApiService().getNode("/api/client/v4/nodes?vless=1");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<void> startSysMode() async {
|
|
|
+
|
|
|
await makeProxy();
|
|
|
- if(controllers.service.coreStatus.value == RunningState.stoped){
|
|
|
- await controllers.service.reloadClashCore();
|
|
|
+ NodeMode? targetNode;
|
|
|
+ if (selectedNode.value == null) {
|
|
|
+ targetNode = await findNodeWithMinUsers(nodeModes);
|
|
|
+ } else {
|
|
|
+ targetNode = selectedNode.value;
|
|
|
+ }
|
|
|
+ if (targetNode != null){
|
|
|
+ selectNode(targetNode);
|
|
|
+ ProxieProxiesItem? targetProxie = await findProxieByName(targetNode.name);
|
|
|
+ if (targetProxie != null) {
|
|
|
+ handleSetProxieGroup(targetProxie, targetNode.name);
|
|
|
+ }
|
|
|
}
|
|
|
- if (controllers.service.coreStatus.value != RunningState.running) return;
|
|
|
- await controllers.core.updateVersion();
|
|
|
await updateDate();
|
|
|
-
|
|
|
+ }
|
|
|
+ Future<void> startTunMode() async {
|
|
|
+ await makeProxy();
|
|
|
NodeMode? targetNode;
|
|
|
if (selectedNode.value == null) {
|
|
|
targetNode = await findNodeWithMinUsers(nodeModes);
|
|
@@ -91,8 +143,14 @@ class GlobalController extends GetxController {
|
|
|
handleSetProxieGroup(targetProxie, targetNode.name);
|
|
|
}
|
|
|
}
|
|
|
+ await updateDate();
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+ Future<void> swift(String name) async {
|
|
|
+ ProxieProxiesItem? targetProxie = await findProxieByName(name);
|
|
|
+ if (targetProxie != null) {
|
|
|
+ handleSetProxieGroup(targetProxie, name);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|