fixed some bugs

This commit is contained in:
2026-09-07 11:42:53 +08:00
parent aca36c78c1
commit 9230db3b69
12 changed files with 883 additions and 14 deletions

View File

@@ -6,15 +6,20 @@ import SwiftUI
final class AuthManager: ObservableObject {
@Published var token: String
@Published var nickname: String
@Published var userID: String
@Published var showingRegister = false
@Published var showingSSO = false
@Published var showingPhoneBinding = false
@Published var ssoPendingToken: String?
@Published var ssoPendingUserId = ""
init() {
let defaults = UserDefaults.standard
token = defaults.string(forKey: "oral_trainer_token") ?? ""
nickname = defaults.string(forKey: "oral_trainer_nickname") ?? ""
let userID = defaults.string(forKey: "oral_trainer_user_id") ?? ""
AppConfig.currentUserId = userID
self.userID = userID
AppConfig.authToken = token
}
@@ -24,22 +29,29 @@ final class AuthManager: ObservableObject {
token = session.token
nickname = session.user.nickname
AppConfig.authToken = session.token
userID = session.user.id
AppConfig.currentUserId = session.user.id
let defaults = UserDefaults.standard
defaults.set(session.token, forKey: "oral_trainer_token")
defaults.set(session.user.nickname, forKey: "oral_trainer_nickname")
defaults.set(session.user.id, forKey: "oral_trainer_user_id")
}
func logout() {
token = ""
nickname = ""
AppConfig.authToken = ""
userID = ""
AppConfig.currentUserId = ""
showingRegister = false
showingSSO = false
showingPhoneBinding = false
ssoPendingToken = nil
ssoPendingUserId = ""
let defaults = UserDefaults.standard
defaults.removeObject(forKey: "oral_trainer_token")
defaults.removeObject(forKey: "oral_trainer_nickname")
defaults.removeObject(forKey: "oral_trainer_user_id")
}
}
@@ -357,6 +369,7 @@ struct SSOWebView: View {
dismiss()
if !result.phoneBound {
auth.ssoPendingToken = result.token
auth.ssoPendingUserId = result.user.id
auth.showingPhoneBinding = true
} else {
auth.saveSession(AuthSession(token: result.token, user: result.user))
@@ -499,7 +512,13 @@ struct PhoneBindingView: View {
try await AuthAPI.ssoBindPhone(token: token, phone: cleaned)
auth.showingPhoneBinding = false
auth.ssoPendingToken = nil
auth.saveSession(AuthSession(token: token, user: AuthUser(id: "", username: "", nickname: "")))
let userID = auth.ssoPendingUserId
auth.saveSession(
AuthSession(
token: token,
user: AuthUser(id: userID, username: "", nickname: "")
)
)
dismiss()
onLoginSuccess()
} catch {