updated with new logic for dealing with employee changes
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
fa5f782968
commit
3238defe84
@ -108,15 +108,13 @@ class EmployeesViewController: UIViewController {
|
|||||||
/// Using the ViewModel setup combine handlers
|
/// Using the ViewModel setup combine handlers
|
||||||
private func bindViewModel() {
|
private func bindViewModel() {
|
||||||
viewModel.$employees
|
viewModel.$employees
|
||||||
|
.scan(([], [])) { previous, current in
|
||||||
|
(previous.1, current) // (oldValue, newValue)
|
||||||
|
}
|
||||||
.receive(on: RunLoop.main)
|
.receive(on: RunLoop.main)
|
||||||
.sink { [weak self] newEmployees in
|
.sink { [weak self] oldValue, newValue in
|
||||||
guard let self = self else { return }
|
self?.animateEmployeeChanges(from: oldValue, to: newValue)
|
||||||
|
self?.updateFooter()
|
||||||
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()
|
|
||||||
}
|
}
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
|
|||||||
@ -15,8 +15,6 @@ public class EmployeesViewModel: ObservableObject {
|
|||||||
private var serviceMode: EmployeeServiceMode = .production
|
private var serviceMode: EmployeeServiceMode = .production
|
||||||
private var employeeService: EmployeeServiceProtocol = MockEmployeeService.shared
|
private var employeeService: EmployeeServiceProtocol = MockEmployeeService.shared
|
||||||
@Published public private(set) var employees: [Employee] = []
|
@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 errorMessage: String? = nil
|
||||||
@Published public private(set) var isLoading: Bool = false
|
@Published public private(set) var isLoading: Bool = false
|
||||||
@Published public private(set) var hasMorePages: Bool = true
|
@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
|
/// Resets the current employee list and fetches data from page 1
|
||||||
private func resetAndFetchEmployees() {
|
private func resetAndFetchEmployees() {
|
||||||
currentPage = 1
|
currentPage = 1
|
||||||
oldEmployees = employees
|
|
||||||
employees = []
|
employees = []
|
||||||
hasMorePages = true
|
hasMorePages = true
|
||||||
fetchEmployees(page: 1)
|
fetchEmployees(page: 1)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user