Skip to content

Commit

Permalink
Merge pull request #5 from dsnallfot/dev-edit-tt
Browse files Browse the repository at this point in the history
Dev edit tt
  • Loading branch information
bjornoleh authored May 26, 2024
2 parents a3fa67e + 60e1cfa commit 45905f8
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import SwiftUI

extension AddTempTarget {
final class StateModel: BaseStateModel<Provider> {
@Injected() var storage: TempTargetsStorage!
@Injected() private var storage: TempTargetsStorage!
@Injected() var apsManager: APSManager!

let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
Expand Down Expand Up @@ -93,6 +93,32 @@ extension AddTempTarget {
}
}

private func convertAndRound(_ value: Decimal) -> Decimal {
if units == .mmolL {
return Decimal(round(Double(value.asMgdL)))
} else {
return Decimal(round(Double(value)))
}
}

func updatePreset(_ preset: TempTarget, low: Decimal) {
let roundedLow = convertAndRound(low)

if let index = presets.firstIndex(where: { $0.id == preset.id }) {
presets[index] = TempTarget(
id: preset.id,
name: newPresetName.isEmpty ? preset.name : newPresetName,
createdAt: preset.createdAt,
targetTop: roundedLow,
targetBottom: roundedLow,
duration: duration,
enteredBy: preset.enteredBy,
reason: newPresetName.isEmpty ? preset.reason : newPresetName
)
storage.storePresets(presets)
}
}

func save() {
guard duration > 0 else {
return
Expand All @@ -103,18 +129,15 @@ extension AddTempTarget {
lowTarget = Decimal(round(Double(computeTarget())))
saveSettings = true
}
var highTarget = lowTarget

if units == .mmolL, !viewPercantage {
lowTarget = Decimal(round(Double(lowTarget.asMgdL)))
highTarget = lowTarget
}
let roundedLow = convertAndRound(lowTarget)

let entry = TempTarget(
name: newPresetName.isEmpty ? TempTarget.custom : newPresetName,
createdAt: Date(),
targetTop: highTarget,
targetBottom: lowTarget,
targetTop: roundedLow,
targetBottom: roundedLow,

duration: duration,
enteredBy: TempTarget.manual,
reason: newPresetName.isEmpty ? TempTarget.custom : newPresetName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ extension AddTempTarget {
let resolver: Resolver
@StateObject var state = StateModel()
@State private var isPromtPresented = false
@State private var isRemoveAlertPresented = false
@State private var removeAlert: Alert?
@State private var isEditing = false
@State private var selectedPreset: TempTarget?
@State private var isEditSheetPresented = false
Expand Down Expand Up @@ -45,11 +47,20 @@ extension AddTempTarget {
ForEach(state.presets) { preset in
presetView(for: preset)
.swipeActions {
Button(role: .destructive) {
state.removePreset(id: preset.id)
} label: {
Button(role: .none, action: {
removeAlert = Alert(
title: Text("Are you sure?"),
message: Text("Delete preset \n\(preset.displayName)?"),
primaryButton: .destructive(Text("Delete"), action: {
state.removePreset(id: preset.id)
isRemoveAlertPresented = false
}),
secondaryButton: .cancel()
)
isRemoveAlertPresented = true
}) {
Label("Delete", systemImage: "trash")
}
}.tint(.red)
Button {
selectedPreset = preset
state.newPresetName = preset.displayName
Expand All @@ -63,6 +74,9 @@ extension AddTempTarget {
}
.tint(.blue)
}
.alert(isPresented: $isRemoveAlertPresented) {
removeAlert!
}
}
}
}
Expand Down Expand Up @@ -192,28 +206,28 @@ extension AddTempTarget {
Form {
Section(header: Text("Edit Preset")) {
TextField("Name", text: $state.newPresetName)
Text(displayString)
Text("Before change: \(displayString)")
.foregroundColor(.secondary)
.font(.caption)
HStack {
Text("New Target")
Spacer()
DecimalTextField("0", value: $state.low, formatter: formatter, cleanInput: true)
Text(state.units.rawValue)
Text(state.units.rawValue).foregroundColor(.secondary)
}
HStack {
Text("New Duration")
Spacer()
DecimalTextField("0", value: $state.duration, formatter: formatter, cleanInput: true)
Text("min")
Text("min").foregroundColor(.secondary)
}
}
Section {
Button("Save") {
guard let selectedPreset = selectedPreset else { return }
state.updatePreset(
selectedPreset,
low: state.units == .mmolL ? state.low.asMgdL : state.low
low: state.low
)
isEditSheetPresented = false
}
Expand Down Expand Up @@ -281,21 +295,3 @@ extension AddTempTarget {
}
}
}

extension AddTempTarget.StateModel {
func updatePreset(_ preset: TempTarget, low: Decimal) {
if let index = presets.firstIndex(where: { $0.id == preset.id }) {
presets[index] = TempTarget(
id: preset.id,
name: newPresetName,
createdAt: preset.createdAt,
targetTop: low,
targetBottom: low,
duration: duration,
enteredBy: preset.enteredBy,
reason: newPresetName
)
storage.storePresets(presets)
}
}
}

0 comments on commit 45905f8

Please sign in to comment.