fix ui
This commit is contained in:
parent
5e40f5b7a7
commit
e2cbaff567
@ -10,12 +10,11 @@ import NetworkExtension
|
||||
import SwiftUI
|
||||
|
||||
// vpn管理类
|
||||
class VPNManager: ObservableObject {
|
||||
class VPNManager {
|
||||
static let shared = VPNManager()
|
||||
|
||||
@Published var vpnStatus: VPNStatus = .disconnected
|
||||
@Published var title: String = "启动"
|
||||
@Published var color: Color = .white
|
||||
private var observation: NSKeyValueObservation?
|
||||
var vpnStatus: VPNStatus = .disconnected
|
||||
|
||||
enum VPNStatus {
|
||||
case connected
|
||||
@ -46,23 +45,17 @@ class VPNManager: ObservableObject {
|
||||
|
||||
// 监控系统VPN的状态的变化
|
||||
private func addVPNStatusObserver(_ manager: NETunnelProviderManager) {
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
|
||||
NotificationCenter.default.addObserver(forName: .NEVPNStatusDidChange, object: manager.connection, queue: .main) { [unowned self] (notification) -> Void in
|
||||
// 更新vpn的状态
|
||||
switch manager.connection.status {
|
||||
self.observation = manager.connection.observe(\.status, options: [.initial, .new]) {[weak self] connection, change in
|
||||
guard let status = change.newValue else {
|
||||
return
|
||||
}
|
||||
switch status {
|
||||
case .invalid, .disconnected, .disconnecting:
|
||||
self.vpnStatus = .disconnected
|
||||
self.title = "启动"
|
||||
self.color = .white
|
||||
self?.vpnStatus = .disconnected
|
||||
case .connecting, .connected, .reasserting:
|
||||
self.vpnStatus = .connected
|
||||
self.title = "停止"
|
||||
self.color = .red
|
||||
self?.vpnStatus = .connected
|
||||
@unknown default:
|
||||
self.vpnStatus = .disconnected
|
||||
self.title = "启动"
|
||||
self.color = .red
|
||||
self?.vpnStatus = .disconnected
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,7 +33,6 @@ struct punchnetApp: App {
|
||||
@AppStorage("token") var token: String = ""
|
||||
@AppStorage("network_code") var networkCode: String = ""
|
||||
@AppStorage("hostname") var hostname: String = ""
|
||||
@ObservedObject var vpnManager = VPNManager.shared
|
||||
|
||||
private var noticeServer: UDPNoticeCenterServer
|
||||
@State private var appContext: AppContext
|
||||
@ -96,7 +95,7 @@ struct punchnetApp: App {
|
||||
Button(action: {
|
||||
self.menuClick()
|
||||
}, label: {
|
||||
Text(vpnManager.title)
|
||||
Text("启动")
|
||||
})
|
||||
|
||||
Divider()
|
||||
@ -111,18 +110,7 @@ struct punchnetApp: App {
|
||||
}
|
||||
|
||||
private func menuClick() {
|
||||
switch self.vpnManager.vpnStatus {
|
||||
case .disconnected:
|
||||
// Task {
|
||||
// let clientId = SystemConfig.getClientId()
|
||||
// try await vpnManager.enableVpn(options: SystemConfig.getOptions(networkCode: self.networkCode, token: self.token, clientId: clientId, hostname: self.hostname, noticePort: self.noticeServer.port)!)
|
||||
// }
|
||||
()
|
||||
case .connected:
|
||||
Task {
|
||||
try await vpnManager.disableVpn()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user