[Feature] Locations list #10

Merged
javier merged 13 commits from feature/locations-list into main 2023-04-12 16:58:28 +00:00
Showing only changes of commit 985e8ffe8e - Show all commits

View File

@ -6,17 +6,33 @@
// Copyright © 2023 Röck+Cöde. All rights reserved. // Copyright © 2023 Röck+Cöde. All rights reserved.
// //
import CoreData
import Combine import Combine
import Core import Dependency
import Foundation
import Persistence
class LocationsListViewModel: ObservableObject { class LocationsListViewModel: ObservableObject {
// MARK: Dependencies
@Dependency(\.persistence) private var persistence
// MARK: Properties // MARK: Properties
weak var coordinator: LocationsListCoordination? weak var coordinator: LocationsListCoordination?
@Published private var viewStatus: LocationsListViewStatus = .initialised @Published private var viewStatus: LocationsListViewStatus = .initialised
private lazy var fetchedResultsController = NSFetchedResultsController(
fetchRequest: NSFetchRequest<Location>.allLocations(),
managedObjectContext: persistence.container.viewContext,
sectionNameKeyPath: nil,
cacheName: nil
)
private let loadRemoteLocations = LoadRemoteLocationsUseCase()
// MARK: Initialisers // MARK: Initialisers
init(coordinator: LocationsListCoordination) { init(coordinator: LocationsListCoordination) {
@ -39,6 +55,22 @@ extension LocationsListViewModel: LocationsListViewModeling {
coordinator?.openAddLocation() coordinator?.openAddLocation()
} }
func loadLocations() {
Task {
do {
viewStatus = .loading
try await loadRemoteLocations()
try fetchedResultsController.performFetch()
viewStatus = .loaded
} catch {
viewStatus = .error
}
}
}
} }
// MARK: - Enumerations // MARK: - Enumerations