Skip to content

Commit

Permalink
Bug fix for saved profiles regarding SMB and UAM basal minutes
Browse files Browse the repository at this point in the history
  • Loading branch information
Jon-b-m committed Oct 29, 2023
1 parent 5dec48d commit a5156a6
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 18 deletions.
1 change: 0 additions & 1 deletion FreeAPS/Sources/APS/OpenAPS/OpenAPS.swift
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,6 @@ final class OpenAPS {

func oref2() -> RawJSON {
coredataContext.performAndWait {
let now = Date()
let preferences = storage.retrieve(OpenAPS.Settings.preferences, as: Preferences.self)
var hbt_ = preferences?.halfBasalExerciseTarget ?? 160
let wp = preferences?.weightPercentage ?? 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@ extension OverrideProfilesConfig {
@Published var end: Decimal = 23
@Published var smbMinutes: Decimal = 0
@Published var uamMinutes: Decimal = 0
@Published var defaultSmbMinutes: Decimal = 0
@Published var defaultUamMinutes: Decimal = 0

var units: GlucoseUnits = .mmolL

override func subscribe() {
units = settingsManager.settings.units
smbMinutes = settingsManager.preferences.maxSMBBasalMinutes
uamMinutes = settingsManager.preferences.maxUAMSMBBasalMinutes
defaultSmbMinutes = settingsManager.preferences.maxSMBBasalMinutes
defaultUamMinutes = settingsManager.preferences.maxUAMSMBBasalMinutes
presets = [OverridePresets(context: coredataContext)]
}

Expand Down Expand Up @@ -151,8 +153,8 @@ extension OverrideProfilesConfig {
saveOverride.end = profile.end
} else { saveOverride.smbIsAlwaysOff = false }

saveOverride.smbMinutes = smbMinutes as NSDecimalNumber
saveOverride.uamMinutes = uamMinutes as NSDecimalNumber
saveOverride.smbMinutes = (profile.smbMinutes ?? 0) as NSDecimalNumber
saveOverride.uamMinutes = (profile.uamMinutes ?? 0) as NSDecimalNumber
}
try? self.coredataContext.save()
}
Expand Down Expand Up @@ -221,6 +223,8 @@ extension OverrideProfilesConfig {
override_target = false
smbIsOff = false
advancedSettings = false
smbMinutes = defaultSmbMinutes
uamMinutes = defaultUamMinutes
}
}
}
Expand All @@ -240,6 +244,8 @@ extension OverrideProfilesConfig {
profiles.date = Date()
try? self.coredataContext.save()
}
smbMinutes = defaultSmbMinutes
uamMinutes = defaultUamMinutes
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,8 @@ extension OverrideProfilesConfig {
}
HStack {
Text("SMB Minutes")
let minutes = state.settingsManager.preferences.maxSMBBasalMinutes
DecimalTextField(
minutes.formatted(),
"0",
value: $state.smbMinutes,
formatter: formatter,
cleanInput: false
Expand All @@ -170,9 +169,8 @@ extension OverrideProfilesConfig {
}
HStack {
Text("UAM SMB Minutes")
let uam_minutes = state.settingsManager.preferences.maxUAMSMBBasalMinutes
DecimalTextField(
uam_minutes.formatted(),
"0",
value: $state.uamMinutes,
formatter: formatter,
cleanInput: false
Expand Down Expand Up @@ -217,10 +215,7 @@ extension OverrideProfilesConfig {
comment: ""
)
}
.disabled(
(state.percentage == 100 && !state.override_target && !state.smbIsOff) ||
(!state._indefinite && state.duration == 0) || (state.override_target && state.target == 0)
)
.disabled(unChanged())
.buttonStyle(BorderlessButtonStyle())
.font(.callout)
.controlSize(.mini)
Expand Down Expand Up @@ -248,12 +243,8 @@ extension OverrideProfilesConfig {
.frame(maxWidth: .infinity, alignment: .trailing)
.buttonStyle(BorderlessButtonStyle())
.controlSize(.mini)
.disabled(
(state.percentage == 100 && !state.override_target && !state.smbIsOff) ||
(!state._indefinite && state.duration == 0) || (state.override_target && state.target == 0)
)
.disabled(unChanged())
}

.sheet(isPresented: $isSheetPresented) {
presetPopover
}
Expand Down Expand Up @@ -336,6 +327,17 @@ extension OverrideProfilesConfig {
}
}

private func unChanged() -> Bool {
let isChanged = (state.percentage == 100 && !state.override_target && !state.smbIsOff && !state.advancedSettings) ||
(!state._indefinite && state.duration == 0) || (state.override_target && state.target == 0) ||
(
state.percentage == 100 && !state.override_target && !state.smbIsOff && state.isf && state.cr && state
.smbMinutes == state.defaultSmbMinutes && state.uamMinutes == state.defaultUamMinutes
)

return isChanged
}

private func removeProfile(at offsets: IndexSet) {
for index in offsets {
let language = fetchedProfiles[index]
Expand Down

0 comments on commit a5156a6

Please sign in to comment.