import Foundation import SwiftData @MainActor class AccountStore: ObservableObject { static let shared = AccountStore() @Published var accounts: [Account] = [] @Published var activeAccount: Account? private init() {} func load() async { accounts = await DatabaseManager.shared.allAccounts() activeAccount = await DatabaseManager.shared.activeAccount() if let account = activeAccount { await VODClient.shared.setActiveAccount(account) } } func addAccount(_ account: Account) async { await DatabaseManager.shared.save(account) if account.isActive { await DatabaseManager.shared.clearActiveAccounts() account.isActive = true await DatabaseManager.shared.save(account) } await load() } func updateAccount(_ account: Account) async { await DatabaseManager.shared.save(account) await load() } func deleteAccount(_ account: Account) async { await DatabaseManager.shared.delete(account) await load() } func switchActive(_ account: Account) async { await DatabaseManager.shared.clearActiveAccounts() account.isActive = true account.updatedAt = Date() await DatabaseManager.shared.save(account) await VODClient.shared.setActiveAccount(account) await load() } }