Skip to content

Commit 469f35e

Browse files
marionbarkerps2
andauthored
Add warning if carb quantity exceeds warning limit (#1873)
* Use LoopConstants for maxmaxCarbEntryQuantity instead of adding a constant in CarbEntryViewController * Not quite working yet - need help with warning portion, see also LoopKit change * Carb quantity validation: add warning, modify messages * move show warning to ValidateInput function * Update large meal warning with two actions * Update comment Co-authored-by: Pete Schwamb <[email protected]>
1 parent 0987a61 commit 469f35e

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

Loop/Models/LoopConstants.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ enum LoopConstants {
1515

1616
// Input field bounds
1717

18-
static let maxCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 250)
18+
static let maxCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 250) // cannot exceed this value
19+
20+
static let warningCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 99) // user is warned above this value
1921

2022
static let validManualGlucoseEntryRange = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 10)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600)
2123

Loop/View Controllers/CarbEntryViewController.swift

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable
3333
return deviceManager.displayGlucoseUnitObservable.displayGlucoseUnit
3434
}
3535

36-
var maxQuantity = HKQuantity(unit: .gram(), doubleValue: 250)
36+
var maxCarbEntryQuantity = LoopConstants.maxCarbEntryQuantity
37+
38+
var warningCarbEntryQuantity = LoopConstants.warningCarbEntryQuantity
3739

3840
/// Entry configuration values. Must be set before presenting.
3941
var absorptionTimePickerInterval = TimeInterval(minutes: 30)
@@ -490,7 +492,15 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable
490492

491493
@objc private func continueButtonPressed() {
492494
tableView.endEditing(true)
493-
guard validateInput(), let updatedEntry = updatedCarbEntry else {
495+
guard validateInput() else {
496+
return
497+
}
498+
continueToBolus()
499+
}
500+
501+
private func continueToBolus() {
502+
503+
guard let updatedEntry = updatedCarbEntry else {
494504
return
495505
}
496506

@@ -526,12 +536,20 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable
526536
}
527537

528538
guard let quantity = quantity, quantity.doubleValue(for: preferredCarbUnit) > 0 else { return false }
529-
guard quantity.compare(maxQuantity) != .orderedDescending else {
530-
navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxQuantity.doubleValue(for: .gram()))
539+
guard quantity.compare(maxCarbEntryQuantity) != .orderedDescending else {
540+
navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxCarbEntryQuantity.doubleValue(for: .gram()))
531541
return false
532542
}
533543

534-
return true
544+
let enteredGrams = quantity.doubleValue(for: .gram())
545+
546+
if (enteredGrams > warningCarbEntryQuantity.doubleValue(for: .gram())) {
547+
navigationDelegate.showWarningQuantityValidationWarning(for: self, enteredGrams: enteredGrams) {
548+
self.continueToBolus()
549+
}
550+
return false
551+
}
552+
return true
535553
}
536554

537555
private func updateContinueButtonEnabled() {
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"info" : {
3-
"author" : "xcode",
4-
"version" : 1
3+
"version" : 1,
4+
"author" : "xcode"
55
}
6-
}
6+
}

0 commit comments

Comments
 (0)