fix
This commit is contained in:
parent
9f5ce7242c
commit
33e20843de
@ -22,8 +22,8 @@ class AppContext {
|
|||||||
var appScene: AppScene = .login(username: nil)
|
var appScene: AppScene = .login(username: nil)
|
||||||
|
|
||||||
enum Credit {
|
enum Credit {
|
||||||
case token(token: String)
|
case token(token: String, accessToken: String)
|
||||||
case accountAndPasword(account: String, password: String)
|
case accountAndPasword(account: String, password: String, accessToken: String)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 当前的场景
|
// 当前的场景
|
||||||
@ -38,24 +38,24 @@ class AppContext {
|
|||||||
self.noticePort = noticePort
|
self.noticePort = noticePort
|
||||||
}
|
}
|
||||||
|
|
||||||
func loginWith(credit: Credit) async throws -> Bool {
|
func loginWith(token: String) async throws {
|
||||||
switch credit {
|
let networkSession = try await SDLAPIClient.loginWithToken(token: token)
|
||||||
case .token(let token):
|
self.loginCredit = .token(token: token, accessToken: networkSession.accessToken)
|
||||||
self.networkSession = try await SDLAPIClient.loginWithToken(token: token)
|
self.networkSession = networkSession
|
||||||
// 将数据缓存到keychain
|
|
||||||
if let data = token.data(using: .utf8) {
|
|
||||||
try KeychainStore.shared.save(data, account: "token")
|
|
||||||
}
|
|
||||||
case .accountAndPasword(let username, let password):
|
|
||||||
self.networkSession = try await SDLAPIClient.loginWithAccountAndPassword(username: username, password: password)
|
|
||||||
// 将数据缓存到keychain
|
|
||||||
if let data = "\(username):\(password)".data(using: .utf8) {
|
|
||||||
try KeychainStore.shared.save(data, account: "accountAndPasword")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.loginCredit = credit
|
|
||||||
|
|
||||||
return true
|
// 将数据缓存到keychain
|
||||||
|
if let data = token.data(using: .utf8) {
|
||||||
|
try KeychainStore.shared.save(data, account: "token")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
// 将数据缓存到keychain
|
||||||
|
if let data = "\(username):\(password)".data(using: .utf8) {
|
||||||
|
try KeychainStore.shared.save(data, account: "accountAndPasword")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadCacheToken() -> String? {
|
func loadCacheToken() -> String? {
|
||||||
|
|||||||
@ -170,7 +170,7 @@ struct LoginAccountView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
_ = try await appContext.loginWith(credit: .accountAndPasword(account: username, password: password))
|
_ = try await appContext.loginWith(username: username, password: password)
|
||||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||||
self.appContext.appScene = .logined
|
self.appContext.appScene = .logined
|
||||||
}
|
}
|
||||||
@ -231,7 +231,7 @@ struct LoginTokenView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
_ = try await appContext.loginWith(credit: .token(token: token))
|
_ = try await appContext.loginWith(token: token)
|
||||||
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
withAnimation(.spring(duration: 0.6, bounce: 0.2)) {
|
||||||
self.appContext.appScene = .logined
|
self.appContext.appScene = .logined
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,9 +20,9 @@ struct SettingsAccountView: View {
|
|||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
if let loginCredit = appContext.loginCredit {
|
if let loginCredit = appContext.loginCredit {
|
||||||
switch loginCredit {
|
switch loginCredit {
|
||||||
case .token(let token):
|
case .token(let token, _):
|
||||||
TokenCreditView(token: token)
|
TokenCreditView(token: token)
|
||||||
case .accountAndPasword(let account, _):
|
case .accountAndPasword(let account, _, _):
|
||||||
AccountCreditView(username: account)
|
AccountCreditView(username: account)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user