diff --git a/password/view/list/ListViewModel.swift b/password/view/list/ListViewModel.swift index 648ba9c..a7f5b71 100644 --- a/password/view/list/ListViewModel.swift +++ b/password/view/list/ListViewModel.swift @@ -10,4 +10,44 @@ import Foundation class ListViewModel: ObservableObject { @Published var passwords: [Password] = [] + + private let passwordRepository: PasswordRepository + + init(passwordRepository: PasswordRepository = KeychainPasswordRepository()) { + self.passwordRepository = passwordRepository + loadAllPasswords() + } + + func loadAllPasswords() { + passwords = passwordRepository.getAllPasswords() + } + + func loadPassword(withID id: UUID) -> Password? { + return passwordRepository.getPassword(withID: id) + } + + func savePassword(name: String, value: String) { + let newPassword = Password(name: name, value: value) + + do { + + try passwordRepository.savePassword(newPassword) + print ("Saved password successfully") + loadAllPasswords() + + } catch { + print("Error saving password: \(error)") + // TODO: display error to user + } + } + + func deletePassword(_ password: Password) { + do { + try passwordRepository.deletePassword(withID: password.id) + loadAllPasswords() + } catch { + print("Error deleting password: \(error)") + // TODO: display error to user + } + } }