This commit is contained in:
anlicheng 2026-03-26 14:27:56 +08:00
parent 728066030b
commit 224e38aa8b
2 changed files with 18 additions and 5 deletions

View File

@ -8,8 +8,8 @@
import Foundation
import Observation
enum AppContextError: Error {
case nullNetworkSession
struct AppContextError: Error {
let message: String
}
@Observable
@ -87,12 +87,12 @@ class AppContext {
//
func connectNetwork() async throws {
guard let session = self.networkSession else {
throw AppContextError.nullNetworkSession
throw AppContextError(message: "未登陆")
}
//
guard !vpnManager.isConnected else {
return
throw AppContextError(message: "网络已经连接")
}
let context = try await SDLAPIClient.connectNetwork(accesToken: session.accessToken)

View File

@ -191,6 +191,9 @@ struct NetworkDisconnectedView: View {
@Environment(AppContext.self) private var appContext: AppContext
@State private var isConnecting: Bool = false
@State private var showAlert: Bool = false
@State private var errorMessage: String = ""
var body: some View {
VStack(spacing: 20) {
Spacer()
@ -220,6 +223,9 @@ struct NetworkDisconnectedView: View {
.disabled(isConnecting)
Spacer()
}
.alert(isPresented: $showAlert) {
Alert(title: Text("提示"), message: Text(errorMessage))
}
}
private func startConnection() async {
@ -230,8 +236,15 @@ struct NetworkDisconnectedView: View {
do {
try await self.appContext.connectNetwork()
} catch let err as SDLAPIError {
self.showAlert = true
self.errorMessage = err.message
} catch let err as AppContextError {
self.showAlert = true
self.errorMessage = err.message
} catch let err {
print("Connection error: \(err)")
self.showAlert = true
self.errorMessage = err.localizedDescription
}
}