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 Foundation
import Observation import Observation
enum AppContextError: Error { struct AppContextError: Error {
case nullNetworkSession let message: String
} }
@Observable @Observable
@ -87,12 +87,12 @@ class AppContext {
// //
func connectNetwork() async throws { func connectNetwork() async throws {
guard let session = self.networkSession else { guard let session = self.networkSession else {
throw AppContextError.nullNetworkSession throw AppContextError(message: "未登陆")
} }
// //
guard !vpnManager.isConnected else { guard !vpnManager.isConnected else {
return throw AppContextError(message: "网络已经连接")
} }
let context = try await SDLAPIClient.connectNetwork(accesToken: session.accessToken) 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 @Environment(AppContext.self) private var appContext: AppContext
@State private var isConnecting: Bool = false @State private var isConnecting: Bool = false
@State private var showAlert: Bool = false
@State private var errorMessage: String = ""
var body: some View { var body: some View {
VStack(spacing: 20) { VStack(spacing: 20) {
Spacer() Spacer()
@ -220,6 +223,9 @@ struct NetworkDisconnectedView: View {
.disabled(isConnecting) .disabled(isConnecting)
Spacer() Spacer()
} }
.alert(isPresented: $showAlert) {
Alert(title: Text("提示"), message: Text(errorMessage))
}
} }
private func startConnection() async { private func startConnection() async {
@ -230,8 +236,15 @@ struct NetworkDisconnectedView: View {
do { do {
try await self.appContext.connectNetwork() 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 { } catch let err {
print("Connection error: \(err)") self.showAlert = true
self.errorMessage = err.localizedDescription
} }
} }