Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions Loop/Managers/LoopDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -389,8 +389,15 @@ final class LoopDataManager: ObservableObject {
recommendationEffectInterval: recommendationEffectInterval
)

// Carb entries (and a backdated manual-bolus entry) can extend back to carbsStart, and
// CarbMath.map(to:) preconditionFailures if the ISF/carb-ratio timelines don't cover every
// carb entry's start date. timelineIntervalForSensitivity derives its window from dose and
// glucose history only — which can be more recent than carbsStart (e.g. after a CGM gap) —
// so extend the ISF (and override) window back to cover the carb window, matching carbRatio.
let sensitivityStart = min(neededSensitivityTimeline.start, carbsStart)

let sensitivity = try await settingsProvider.getInsulinSensitivityHistory(
startDate: neededSensitivityTimeline.start,
startDate: sensitivityStart,
endDate: neededSensitivityTimeline.end
)

Expand All @@ -404,7 +411,7 @@ final class LoopDataManager: ObservableObject {
throw LoopError.configurationError(.maximumBasalRatePerHour)
}

var overrides = temporaryPresetsManager.presetHistory.getOverrideHistory(startDate: neededSensitivityTimeline.start, endDate: forecastEndTime)
var overrides = temporaryPresetsManager.presetHistory.getOverrideHistory(startDate: sensitivityStart, endDate: forecastEndTime)

// For recommendation, we should consider preMeal override to be ending at time of dose
if presumePresetEndingNow,
Expand Down