2023-02-27 05:39:07 +00:00
|
|
|
import Combine
|
2023-01-02 18:23:44 +00:00
|
|
|
import Models
|
|
|
|
import Network
|
2023-01-17 10:36:01 +00:00
|
|
|
import SwiftUI
|
2023-01-02 18:23:44 +00:00
|
|
|
|
|
|
|
@MainActor
|
|
|
|
public class ListEditViewModel: ObservableObject {
|
|
|
|
let list: Models.List
|
2023-01-17 10:36:01 +00:00
|
|
|
|
2023-01-02 18:23:44 +00:00
|
|
|
var client: Client?
|
2023-01-17 10:36:01 +00:00
|
|
|
|
2023-01-02 18:23:44 +00:00
|
|
|
@Published var isLoadingAccounts: Bool = true
|
|
|
|
@Published var accounts: [Account] = []
|
2023-01-17 10:36:01 +00:00
|
|
|
|
2023-01-02 18:23:44 +00:00
|
|
|
init(list: Models.List) {
|
|
|
|
self.list = list
|
|
|
|
}
|
2023-01-17 10:36:01 +00:00
|
|
|
|
2023-01-02 18:23:44 +00:00
|
|
|
func fetchAccounts() async {
|
|
|
|
guard let client else { return }
|
|
|
|
isLoadingAccounts = true
|
|
|
|
do {
|
|
|
|
accounts = try await client.get(endpoint: Lists.accounts(listId: list.id))
|
|
|
|
isLoadingAccounts = false
|
|
|
|
} catch {
|
|
|
|
isLoadingAccounts = false
|
|
|
|
}
|
|
|
|
}
|
2023-02-04 20:53:13 +00:00
|
|
|
|
|
|
|
func delete(account: Account) async {
|
|
|
|
guard let client else { return }
|
|
|
|
do {
|
|
|
|
let response = try await client.delete(endpoint: Lists.updateAccounts(listId: list.id, accounts: [account.id]))
|
|
|
|
if response?.statusCode == 200 {
|
|
|
|
accounts.removeAll(where: { $0.id == account.id })
|
|
|
|
}
|
|
|
|
} catch {}
|
|
|
|
}
|
2023-01-02 18:23:44 +00:00
|
|
|
}
|