88 lines
2.3 KiB
Swift
88 lines
2.3 KiB
Swift
import Foundation
|
|
import ComposeApp
|
|
import Combine
|
|
|
|
@MainActor
|
|
class LookupsManager: ObservableObject {
|
|
static let shared = LookupsManager()
|
|
|
|
// Published properties for SwiftUI
|
|
@Published var residenceTypes: [ResidenceType] = []
|
|
@Published var taskCategories: [TaskCategory] = []
|
|
@Published var taskFrequencies: [TaskFrequency] = []
|
|
@Published var taskPriorities: [TaskPriority] = []
|
|
@Published var taskStatuses: [TaskStatus] = []
|
|
@Published var isLoading: Bool = false
|
|
@Published var isInitialized: Bool = false
|
|
|
|
private let repository = LookupsRepository.shared
|
|
|
|
private init() {
|
|
// Start observing the repository flows
|
|
startObserving()
|
|
}
|
|
|
|
private func startObserving() {
|
|
// Observe residence types
|
|
Task {
|
|
for await types in repository.residenceTypes.residenceTypesAsyncSequence {
|
|
self.residenceTypes = types
|
|
}
|
|
}
|
|
|
|
// Observe task categories
|
|
Task {
|
|
for await categories in repository.taskCategories.taskCategoriesAsyncSequence {
|
|
self.taskCategories = categories
|
|
}
|
|
}
|
|
|
|
// Observe task frequencies
|
|
Task {
|
|
for await frequencies in repository.taskFrequencies.taskFrequenciesAsyncSequence {
|
|
self.taskFrequencies = frequencies
|
|
}
|
|
}
|
|
|
|
// Observe task priorities
|
|
Task {
|
|
for await priorities in repository.taskPriorities.taskPrioritiesAsyncSequence {
|
|
self.taskPriorities = priorities
|
|
}
|
|
}
|
|
|
|
// Observe task statuses
|
|
Task {
|
|
for await statuses in repository.taskStatuses.taskStatusesAsyncSequence {
|
|
self.taskStatuses = statuses
|
|
}
|
|
}
|
|
|
|
// Observe loading state
|
|
Task {
|
|
for await loading in repository.isLoading.boolAsyncSequence {
|
|
self.isLoading = loading
|
|
}
|
|
}
|
|
|
|
// Observe initialized state
|
|
Task {
|
|
for await initialized in repository.isInitialized.boolAsyncSequence {
|
|
self.isInitialized = initialized
|
|
}
|
|
}
|
|
}
|
|
|
|
func initialize() {
|
|
repository.initialize()
|
|
}
|
|
|
|
func refresh() {
|
|
repository.refresh()
|
|
}
|
|
|
|
func clear() {
|
|
repository.clear()
|
|
}
|
|
}
|