diff --git a/EmployeeDirectory/ViewControllers/EmployeesViewController.swift b/EmployeeDirectory/ViewControllers/EmployeesViewController.swift index 56baaed..58e7ff2 100644 --- a/EmployeeDirectory/ViewControllers/EmployeesViewController.swift +++ b/EmployeeDirectory/ViewControllers/EmployeesViewController.swift @@ -108,15 +108,13 @@ class EmployeesViewController: UIViewController { /// Using the ViewModel setup combine handlers private func bindViewModel() { viewModel.$employees + .scan(([], [])) { previous, current in + (previous.1, current) // (oldValue, newValue) + } .receive(on: RunLoop.main) - .sink { [weak self] newEmployees in - guard let self = self else { return } - - let oldEmployees = self.viewModel.oldEmployees // Keep track of the previous state - self.animateEmployeeChanges(from: oldEmployees, to: newEmployees) - - // Update footer and other UI elements as needed - self.updateFooter() + .sink { [weak self] oldValue, newValue in + self?.animateEmployeeChanges(from: oldValue, to: newValue) + self?.updateFooter() } .store(in: &cancellables) diff --git a/EmployeeDirectory/ViewModels/EmployeesViewModel.swift b/EmployeeDirectory/ViewModels/EmployeesViewModel.swift index ec3d93f..f3e93c7 100644 --- a/EmployeeDirectory/ViewModels/EmployeesViewModel.swift +++ b/EmployeeDirectory/ViewModels/EmployeesViewModel.swift @@ -15,8 +15,6 @@ public class EmployeesViewModel: ObservableObject { private var serviceMode: EmployeeServiceMode = .production private var employeeService: EmployeeServiceProtocol = MockEmployeeService.shared @Published public private(set) var employees: [Employee] = [] - public private(set) var oldEmployees: [Employee] = [] - @Published public private(set) var errorMessage: String? = nil @Published public private(set) var isLoading: Bool = false @Published public private(set) var hasMorePages: Bool = true @@ -92,7 +90,6 @@ public class EmployeesViewModel: ObservableObject { /// Resets the current employee list and fetches data from page 1 private func resetAndFetchEmployees() { currentPage = 1 - oldEmployees = employees employees = [] hasMorePages = true fetchEmployees(page: 1)