diff --git a/Loop/Models/LoopConstants.swift b/Loop/Models/LoopConstants.swift index 67f43e38c0..1f439c08ef 100644 --- a/Loop/Models/LoopConstants.swift +++ b/Loop/Models/LoopConstants.swift @@ -15,7 +15,9 @@ enum LoopConstants { // Input field bounds - static let maxCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 250) + static let maxCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 250) // cannot exceed this value + + static let warningCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 99) // user is warned above this value static let validManualGlucoseEntryRange = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 10)...HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 600) diff --git a/Loop/View Controllers/CarbEntryViewController.swift b/Loop/View Controllers/CarbEntryViewController.swift index d553682a9e..9411696fd5 100644 --- a/Loop/View Controllers/CarbEntryViewController.swift +++ b/Loop/View Controllers/CarbEntryViewController.swift @@ -33,7 +33,9 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable return deviceManager.displayGlucoseUnitObservable.displayGlucoseUnit } - var maxQuantity = HKQuantity(unit: .gram(), doubleValue: 250) + var maxCarbEntryQuantity = LoopConstants.maxCarbEntryQuantity + + var warningCarbEntryQuantity = LoopConstants.warningCarbEntryQuantity /// Entry configuration values. Must be set before presenting. var absorptionTimePickerInterval = TimeInterval(minutes: 30) @@ -490,7 +492,15 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable @objc private func continueButtonPressed() { tableView.endEditing(true) - guard validateInput(), let updatedEntry = updatedCarbEntry else { + guard validateInput() else { + return + } + continueToBolus() + } + + private func continueToBolus() { + + guard let updatedEntry = updatedCarbEntry else { return } @@ -526,12 +536,20 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable } guard let quantity = quantity, quantity.doubleValue(for: preferredCarbUnit) > 0 else { return false } - guard quantity.compare(maxQuantity) != .orderedDescending else { - navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxQuantity.doubleValue(for: .gram())) + guard quantity.compare(maxCarbEntryQuantity) != .orderedDescending else { + navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxCarbEntryQuantity.doubleValue(for: .gram())) return false } - return true + let enteredGrams = quantity.doubleValue(for: .gram()) + + if (enteredGrams > warningCarbEntryQuantity.doubleValue(for: .gram())) { + navigationDelegate.showWarningQuantityValidationWarning(for: self, enteredGrams: enteredGrams) { + self.continueToBolus() + } + return false + } + return true } private func updateContinueButtonEnabled() { diff --git a/WatchApp/DerivedAssets.xcassets/Contents.json b/WatchApp/DerivedAssets.xcassets/Contents.json index 73c00596a7..da4a164c91 100644 --- a/WatchApp/DerivedAssets.xcassets/Contents.json +++ b/WatchApp/DerivedAssets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "author" : "xcode", - "version" : 1 + "version" : 1, + "author" : "xcode" } -} +} \ No newline at end of file