IceCubesApp/IceCubesApp/App/AppAccounts/AppAccountsManager.swift

39 lines
1.1 KiB
Swift
Raw Normal View History

2022-12-01 08:05:26 +00:00
import SwiftUI
import Network
class AppAccountsManager: ObservableObject {
@Published var currentAccount: AppAccount {
didSet {
currentClient = .init(server: currentAccount.server,
oauthToken: currentAccount.oauthToken)
}
}
2022-12-29 06:00:00 +00:00
@Published var availableAccounts: [AppAccount]
2022-12-01 08:05:26 +00:00
@Published var currentClient: Client
init() {
var defaultAccount = AppAccount(server: IceCubesApp.defaultServer, oauthToken: nil)
do {
let keychainAccounts = try AppAccount.retrieveAll()
2022-12-29 06:00:00 +00:00
availableAccounts = keychainAccounts
2022-12-17 12:37:46 +00:00
defaultAccount = keychainAccounts.last ?? defaultAccount
2022-12-01 08:05:26 +00:00
} catch {}
currentAccount = defaultAccount
2022-12-29 06:00:00 +00:00
availableAccounts = [defaultAccount]
2022-12-01 08:05:26 +00:00
currentClient = .init(server: defaultAccount.server, oauthToken: defaultAccount.oauthToken)
}
func add(account: AppAccount) {
do {
try account.save()
currentAccount = account
} catch { }
}
func delete(account: AppAccount) {
account.delete()
2022-12-17 12:37:46 +00:00
AppAccount.deleteAll()
2022-12-01 08:05:26 +00:00
currentAccount = AppAccount(server: IceCubesApp.defaultServer, oauthToken: nil)
}
}