feat: Resolving concurrency warnings

This commit is contained in:
2024-06-11 10:34:19 -04:00
parent e07df0e426
commit bf2e65fb8f
15 changed files with 156 additions and 130 deletions

View File

@@ -1,13 +1,15 @@
import ComposableArchitecture
import Foundation
import SharedModels
/// Holds onto shared values for several of the views in this feature.
@dynamicMemberLookup
public struct SharedPressureEstimationSettings: Equatable {
public struct SharedPressureEstimationSettings: Equatable, Sendable {
public var budgets: BudgetedPercentEnvelope?
public var equipmentMeasurement: EquipmentMeasurement?
public var equipmentMetadata: EquipmentMetadata
public var flaggedEquipmentMeasurement: EquipmentMeasurement.FlaggedMeasurement?
public var flaggedEstimations: IdentifiedArrayOf<FlaggedMeasurementContainer>
public var heatingCapacity: Double?
public var manufacturersIncludedFilterPressureDrop: Double?
@@ -16,6 +18,7 @@ public struct SharedPressureEstimationSettings: Equatable {
equipmentMeasurement: EquipmentMeasurement? = nil,
equipmentMetadata: EquipmentMetadata = .init(),
flaggedEquipmentMeasurement: EquipmentMeasurement.FlaggedMeasurement? = nil,
flaggedEstimations: IdentifiedArrayOf<FlaggedMeasurementContainer> = [],
heatingCapacity: Double? = nil,
manufacturersIncludedFilterPressureDrop: Double? = nil
) {
@@ -23,6 +26,7 @@ public struct SharedPressureEstimationSettings: Equatable {
self.equipmentMeasurement = equipmentMeasurement
self.equipmentMetadata = equipmentMetadata
self.flaggedEquipmentMeasurement = flaggedEquipmentMeasurement
self.flaggedEstimations = flaggedEstimations
self.heatingCapacity = heatingCapacity
self.manufacturersIncludedFilterPressureDrop = manufacturersIncludedFilterPressureDrop
}
@@ -31,6 +35,22 @@ public struct SharedPressureEstimationSettings: Equatable {
get { equipmentMetadata[keyPath: keyPath] }
set { equipmentMetadata[keyPath: keyPath] = newValue }
}
public struct FlaggedMeasurementContainer: Equatable, Identifiable, Sendable {
public let id: UUID
public var flaggedMeasurement: EquipmentMeasurement.FlaggedMeasurement
public var name: String
public init(
id: UUID,
name: String,
flaggedMeasurement: EquipmentMeasurement.FlaggedMeasurement
) {
self.id = id
self.name = name
self.flaggedMeasurement = flaggedMeasurement
}
}
}
extension PersistenceReaderKey where Self == InMemoryKey<SharedPressureEstimationSettings> {