fix binding

This commit is contained in:
anlicheng 2026-03-25 16:09:06 +08:00
parent 2c440a32c7
commit dee3e26c33
3 changed files with 23 additions and 2 deletions

View File

@ -18,8 +18,8 @@ class VPNManager {
private var manager: NETunnelProviderManager?
private var statusObserver: NSObjectProtocol?
var isConnected: Bool = false
var vpnStatus: VPNStatus = .disconnected
var isConnected: Bool = false
var vpnStatusStream: AsyncStream<VPNStatus>
private var vpnStatusCont: AsyncStream<VPNStatus>.Continuation

View File

@ -90,6 +90,11 @@ class AppContext {
throw AppContextError.nullNetworkSession
}
//
guard !vpnManager.isConnected else {
return
}
let context = try await SDLAPIClient.connectNetwork(accesToken: session.accessToken)
if let options = SystemConfig.getOptions(
networkId: UInt32(session.networkId),

View File

@ -105,6 +105,21 @@ struct NetworkStatusBar: View {
@State private var vpnManger = VPNManager.shared
var body: some View {
let isOnBinding = Binding(
get: { vpnManger.isConnected },
set: { newValue in
if newValue {
Task {
try? await self.appContext.connectNetwork()
}
} else {
Task {
try? await self.appContext.disconnectNetwork()
}
}
}
)
HStack(spacing: 12) {
//
HStack(spacing: 20) {
@ -133,12 +148,13 @@ struct NetworkStatusBar: View {
// Switch
// 使 Binding /
Toggle("", isOn: $vpnManger.isConnected)
Toggle("", isOn: isOnBinding)
.toggleStyle(.switch)
.controlSize(.small) // macOS 使 small
}
.padding(.vertical, 5)
}
}
struct NetworkConnectedView: View {