From 3cb42af573f62b4550af0b21e890be894d71fcde Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Tue, 24 Mar 2026 13:35:05 +0800 Subject: [PATCH] fix --- punchnet/Views/AppContext.swift | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/punchnet/Views/AppContext.swift b/punchnet/Views/AppContext.swift index e05f256..43eb74b 100644 --- a/punchnet/Views/AppContext.swift +++ b/punchnet/Views/AppContext.swift @@ -16,14 +16,25 @@ class AppContext { var networkContext: SDLAPIClient.NetworkContext? var loginCredit: Credit? - var networkSession: SDLAPIClient.NetworkSession? - // 当前app所处的场景 var appScene: AppScene = .login(username: nil) enum Credit { - case token(token: String, accessToken: String) - case accountAndPasword(account: String, password: String, accessToken: String) + case token(token: String, session: SDLAPIClient.NetworkSession) + case accountAndPasword(account: String, password: String, session: SDLAPIClient.NetworkSession) + } + + var networkSession: SDLAPIClient.NetworkSession? { + guard let loginCredit = self.loginCredit else { + return nil + } + + switch loginCredit { + case .token(_, let session): + return session + case .accountAndPasword(_, _, let session): + return session + } } // 当前的场景 @@ -40,9 +51,7 @@ class AppContext { func loginWith(token: String) async throws { let networkSession = try await SDLAPIClient.loginWithToken(token: token) - self.loginCredit = .token(token: token, accessToken: networkSession.accessToken) - self.networkSession = networkSession - + self.loginCredit = .token(token: token, session: networkSession) // 将数据缓存到keychain if let data = token.data(using: .utf8) { try KeychainStore.shared.save(data, account: "token") @@ -51,7 +60,7 @@ class AppContext { func loginWith(username: String, password: String) async throws { let networkSession = try await SDLAPIClient.loginWithAccountAndPassword(username: username, password: password) - self.loginCredit = .accountAndPasword(account: username, password: password, accessToken: networkSession.accessToken) + self.loginCredit = .accountAndPasword(account: username, password: password, session: networkSession) // 将数据缓存到keychain if let data = "\(username):\(password)".data(using: .utf8) { try KeychainStore.shared.save(data, account: "accountAndPasword")