Files
honeyDueKMP/iosApp/iosApp/LookupsManager.swift
Trey t 2be3a5a3a8 wip
2025-11-05 10:38:46 -06:00

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()
}
}