Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 3 additions & 1 deletion Loop/Models/LoopConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
28 changes: 23 additions & 5 deletions Loop/View Controllers/CarbEntryViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
}

Expand Down Expand Up @@ -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() {
Expand Down
6 changes: 3 additions & 3 deletions WatchApp/DerivedAssets.xcassets/Contents.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
"version" : 1,
"author" : "xcode"
}
}
}