From 42e2d9e53d14ebde2d13b1d387af28ee9c3b7ec6 Mon Sep 17 00:00:00 2001 From: Markus Thielker Date: Thu, 16 Jan 2025 00:23:25 +0100 Subject: [PATCH] Add repository and functions to view model --- password/view/list/ListViewModel.swift | 40 ++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) 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 + } + } }