[Feature] Location add #11

Merged
javier merged 8 commits from feature/location-add into main 2023-04-12 21:25:09 +00:00
Showing only changes of commit e17c407af4 - Show all commits

View File

@ -6,7 +6,6 @@
// 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 Dependency import Dependency
import Foundation import Foundation
@ -22,14 +21,9 @@ class LocationsListViewModel: ObservableObject {
weak var coordinator: LocationsListCoordination? weak var coordinator: LocationsListCoordination?
@Published private var viewStatus: LocationsListViewStatus = .initialised private lazy var locationProvider = LocationProvider(managedContext: persistence.container.viewContext)
private lazy var fetchedResultsController = NSFetchedResultsController( @Published private var viewStatus: LocationsListViewStatus = .initialised
fetchRequest: NSFetchRequest<Location>.allLocations(),
managedObjectContext: persistence.container.viewContext,
sectionNameKeyPath: nil,
cacheName: nil
)
private let loadRemoteLocations = LoadRemoteLocationsUseCase() private let loadRemoteLocations = LoadRemoteLocationsUseCase()
@ -47,8 +41,8 @@ extension LocationsListViewModel: LocationsListViewModeling {
// MARK: Properties // MARK: Properties
var numberOfSectionsInData: Int { locationProvider.numberOfSections }
var viewStatusPublisher: Published<LocationsListViewStatus>.Publisher { $viewStatus } var viewStatusPublisher: Published<LocationsListViewStatus>.Publisher { $viewStatus }
var numberOfSectionsInData: Int { fetchedResultsController.sections?.count ?? 0 }
// MARK: Functions // MARK: Functions
@ -63,7 +57,7 @@ extension LocationsListViewModel: LocationsListViewModeling {
try await loadRemoteLocations() try await loadRemoteLocations()
try fetchedResultsController.performFetch() try locationProvider.fetch()
viewStatus = .loaded viewStatus = .loaded
} catch { } catch {
@ -73,18 +67,11 @@ extension LocationsListViewModel: LocationsListViewModeling {
} }
func numberOfDataItems(in section: Int) -> Int { func numberOfDataItems(in section: Int) -> Int {
guard locationProvider.numberOfLocationsInSection(section)
let sections = fetchedResultsController.sections,
sections.endIndex > section
else {
return 0
}
return sections[section].numberOfObjects
} }
func dataItem(at indexPath: IndexPath) -> Location { func dataItem(at indexPath: IndexPath) -> Location {
fetchedResultsController.object(at: indexPath) locationProvider.location(at: indexPath)
} }
} }