commented the code and refactored to new shared.

Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
Matt Bruce 2025-01-21 09:14:15 -06:00
parent c127a6c465
commit 069cc8c06a

View File

@ -7,18 +7,17 @@
import Foundation import Foundation
/// ViewModel that will be bound to an Employees model and used
/// specifically with the EmployeesViewController.
@MainActor @MainActor
public class EmployeesViewModel: ObservableObject { public class EmployeesViewModel: ObservableObject {
private let service: EmployeeService
private var serviceMode: EmployeeServiceMode = .production private var serviceMode: EmployeeServiceMode = .production
@Published public private(set) var employees: [Employee] = [] @Published public private(set) var employees: [Employee] = []
@Published public private(set) var errorMessage: String? = nil @Published public private(set) var errorMessage: String? = nil
@Published public private(set) var isLoading: Bool = false @Published public private(set) var isLoading: Bool = false
public init(service: EmployeeService = EmployeeService()) { public init() {}
self.service = service
}
public func fetchEmployees() { public func fetchEmployees() {
// resetting values out the values before fetching new data // resetting values out the values before fetching new data
@ -28,17 +27,17 @@ public class EmployeesViewModel: ObservableObject {
Task { Task {
do { do {
// Fetch employees using the async method // Fetch employees using the async method
let wrapper = try await service.getEmployees(serviceMode) let wrapper = try await EmployeeService.shared.getEmployees(serviceMode)
// Update published properties // Update published properties
self.employees = wrapper.employees employees = wrapper.employees
self.isLoading = false isLoading = false
} catch { } catch {
// Handle errors // Handle errors
self.employees = [] employees = []
self.isLoading = false isLoading = false
self.errorMessage = "An unexpected error occurred, please try to refresh" errorMessage = "An unexpected error occurred, please try to refresh"
} }
} }