fix: iOS ChlorineView lsvManualPeaks -> clManualPeaks, Storage concurrency
This commit is contained in:
parent
cabf04551c
commit
01edb88e0b
|
|
@ -72,6 +72,7 @@ final class AppState {
|
||||||
var clDepT: String = "5000"
|
var clDepT: String = "5000"
|
||||||
var clMeasT: String = "5000"
|
var clMeasT: String = "5000"
|
||||||
var clRtia: LpRtia = .r10K
|
var clRtia: LpRtia = .r10K
|
||||||
|
var clManualPeaks: Bool = false
|
||||||
|
|
||||||
// pH
|
// pH
|
||||||
var phResult: PhResult? = nil
|
var phResult: PhResult? = nil
|
||||||
|
|
|
||||||
|
|
@ -231,9 +231,10 @@ final class Storage: @unchecked Sendable {
|
||||||
|
|
||||||
// MARK: - Observation (for SwiftUI live updates)
|
// MARK: - Observation (for SwiftUI live updates)
|
||||||
|
|
||||||
|
@MainActor
|
||||||
func observeDataPoints(
|
func observeDataPoints(
|
||||||
measurementId: Int64,
|
measurementId: Int64,
|
||||||
onChange: @escaping ([DataPoint]) -> Void
|
onChange: @escaping @Sendable ([DataPoint]) -> Void
|
||||||
) -> DatabaseCancellable {
|
) -> DatabaseCancellable {
|
||||||
let observation = ValueObservation.tracking { db in
|
let observation = ValueObservation.tracking { db in
|
||||||
try DataPoint
|
try DataPoint
|
||||||
|
|
@ -244,7 +245,8 @@ final class Storage: @unchecked Sendable {
|
||||||
return observation.start(in: dbQueue, onError: { _ in }, onChange: onChange)
|
return observation.start(in: dbQueue, onError: { _ in }, onChange: onChange)
|
||||||
}
|
}
|
||||||
|
|
||||||
func observeSessions(onChange: @escaping ([Session]) -> Void) -> DatabaseCancellable {
|
@MainActor
|
||||||
|
func observeSessions(onChange: @escaping @Sendable ([Session]) -> Void) -> DatabaseCancellable {
|
||||||
let observation = ValueObservation.tracking { db in
|
let observation = ValueObservation.tracking { db in
|
||||||
try Session.order(Column("startedAt").desc).fetchAll(db)
|
try Session.order(Column("startedAt").desc).fetchAll(db)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,9 @@ struct ChlorineView: View {
|
||||||
Button("Start LSV") { state.startLSV() }
|
Button("Start LSV") { state.startLSV() }
|
||||||
.buttonStyle(ActionButtonStyle(color: .green))
|
.buttonStyle(ActionButtonStyle(color: .green))
|
||||||
|
|
||||||
Button(state.lsvManualPeaks ? "Manual" : "Auto") {
|
Button(state.clManualPeaks ? "Manual" : "Auto") {
|
||||||
state.lsvManualPeaks.toggle()
|
state.clManualPeaks.toggle()
|
||||||
if state.lsvManualPeaks {
|
if state.clManualPeaks {
|
||||||
state.lsvPeaks.removeAll()
|
state.lsvPeaks.removeAll()
|
||||||
} else {
|
} else {
|
||||||
state.lsvPeaks = detectLsvPeaks(state.lsvPoints)
|
state.lsvPeaks = detectLsvPeaks(state.lsvPoints)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue