From 74c6adf8f5cebfc0f8b7f9718e7f5111e85f0612 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 16 Dec 2022 08:41:50 -0800 Subject: [PATCH 1/6] Use LoopConstants for maxmaxCarbEntryQuantity instead of adding a constant in CarbEntryViewController --- Loop/View Controllers/CarbEntryViewController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Loop/View Controllers/CarbEntryViewController.swift b/Loop/View Controllers/CarbEntryViewController.swift index d553682a9e..da14e04202 100644 --- a/Loop/View Controllers/CarbEntryViewController.swift +++ b/Loop/View Controllers/CarbEntryViewController.swift @@ -33,7 +33,7 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable return deviceManager.displayGlucoseUnitObservable.displayGlucoseUnit } - var maxQuantity = HKQuantity(unit: .gram(), doubleValue: 250) + var maxCarbEntryQuantity = LoopConstants.maxCarbEntryQuantity /// Entry configuration values. Must be set before presenting. var absorptionTimePickerInterval = TimeInterval(minutes: 30) @@ -526,8 +526,8 @@ 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 } From cad55a221195941db23713fc63a04343b96aa21d Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 16 Dec 2022 09:09:29 -0800 Subject: [PATCH 2/6] Not quite working yet - need help with warning portion, see also LoopKit change --- Loop/Models/LoopConstants.swift | 4 +++- Loop/View Controllers/CarbEntryViewController.swift | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Loop/Models/LoopConstants.swift b/Loop/Models/LoopConstants.swift index 67f43e38c0..294976a5b8 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 at 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 da14e04202..77ff8dfa22 100644 --- a/Loop/View Controllers/CarbEntryViewController.swift +++ b/Loop/View Controllers/CarbEntryViewController.swift @@ -35,6 +35,8 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable var maxCarbEntryQuantity = LoopConstants.maxCarbEntryQuantity + var warningCarbEntryQuantity = LoopConstants.warningCarbEntryQuantity + /// Entry configuration values. Must be set before presenting. var absorptionTimePickerInterval = TimeInterval(minutes: 30) @@ -530,6 +532,10 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxCarbEntryQuantity.doubleValue(for: .gram())) return false } + guard quantity.compare(warningCarbEntryQuantity) != .orderedDescending else { + navigationDelegate.showWarningQuantityValidationWarning(for: self, warningQuantityGrams: warningCarbEntryQuantity.doubleValue(for: .gram())) + return false + } return true } From 4f94a9a27172b7cb6edf0c78f1fe61cc1de06e2d Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sat, 17 Dec 2022 06:53:06 -0800 Subject: [PATCH 3/6] Carb quantity validation: add warning, modify messages --- .../CarbEntryViewController.swift | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Loop/View Controllers/CarbEntryViewController.swift b/Loop/View Controllers/CarbEntryViewController.swift index 77ff8dfa22..d8377ee8ac 100644 --- a/Loop/View Controllers/CarbEntryViewController.swift +++ b/Loop/View Controllers/CarbEntryViewController.swift @@ -36,6 +36,7 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable var maxCarbEntryQuantity = LoopConstants.maxCarbEntryQuantity var warningCarbEntryQuantity = LoopConstants.warningCarbEntryQuantity + var warningMessagePresented = false /// Entry configuration values. Must be set before presenting. var absorptionTimePickerInterval = TimeInterval(minutes: 30) @@ -68,6 +69,7 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable didSet { if quantity != oldValue { updateLastEntryDate() + warningMessagePresented = false } updateContinueButtonEnabled() } @@ -495,6 +497,14 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable guard validateInput(), let updatedEntry = updatedCarbEntry else { return } + // this is a warning, allows user to continue + if (!warningMessagePresented && + updatedCarbEntry!.quantity.doubleValue(for: .gram()) > warningCarbEntryQuantity.doubleValue(for: .gram()) ) + { + navigationDelegate.showWarningQuantityValidationWarning(for: self, warningQuantityGrams: warningCarbEntryQuantity.doubleValue(for: .gram())) + warningMessagePresented = true + } + let viewModel = BolusEntryViewModel( delegate: deviceManager, @@ -532,11 +542,6 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxCarbEntryQuantity.doubleValue(for: .gram())) return false } - guard quantity.compare(warningCarbEntryQuantity) != .orderedDescending else { - navigationDelegate.showWarningQuantityValidationWarning(for: self, warningQuantityGrams: warningCarbEntryQuantity.doubleValue(for: .gram())) - return false - } - return true } From c54e56fee4a433e84d9a5299184aaf1b4e9a5399 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sat, 17 Dec 2022 11:37:26 -0800 Subject: [PATCH 4/6] move show warning to ValidateInput function --- .../CarbEntryViewController.swift | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Loop/View Controllers/CarbEntryViewController.swift b/Loop/View Controllers/CarbEntryViewController.swift index d8377ee8ac..54fd478394 100644 --- a/Loop/View Controllers/CarbEntryViewController.swift +++ b/Loop/View Controllers/CarbEntryViewController.swift @@ -497,14 +497,6 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable guard validateInput(), let updatedEntry = updatedCarbEntry else { return } - // this is a warning, allows user to continue - if (!warningMessagePresented && - updatedCarbEntry!.quantity.doubleValue(for: .gram()) > warningCarbEntryQuantity.doubleValue(for: .gram()) ) - { - navigationDelegate.showWarningQuantityValidationWarning(for: self, warningQuantityGrams: warningCarbEntryQuantity.doubleValue(for: .gram())) - warningMessagePresented = true - } - let viewModel = BolusEntryViewModel( delegate: deviceManager, @@ -542,7 +534,14 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxCarbEntryQuantity.doubleValue(for: .gram())) return false } - return true + if (!warningMessagePresented && + quantity.doubleValue(for: .gram()) > warningCarbEntryQuantity.doubleValue(for: .gram()) ) + { + navigationDelegate.showWarningQuantityValidationWarning(for: self, warningQuantityGrams: warningCarbEntryQuantity.doubleValue(for: .gram())) + warningMessagePresented = true + return true + } + return true } private func updateContinueButtonEnabled() { From bd0c97561d6b50ba0a3031d7281bde88e19b9227 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 18 Dec 2022 12:27:24 -0600 Subject: [PATCH 5/6] Update large meal warning with two actions --- .../CarbEntryViewController.swift | 26 ++++++++++++------- WatchApp/DerivedAssets.xcassets/Contents.json | 6 ++--- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/Loop/View Controllers/CarbEntryViewController.swift b/Loop/View Controllers/CarbEntryViewController.swift index 54fd478394..9411696fd5 100644 --- a/Loop/View Controllers/CarbEntryViewController.swift +++ b/Loop/View Controllers/CarbEntryViewController.swift @@ -36,7 +36,6 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable var maxCarbEntryQuantity = LoopConstants.maxCarbEntryQuantity var warningCarbEntryQuantity = LoopConstants.warningCarbEntryQuantity - var warningMessagePresented = false /// Entry configuration values. Must be set before presenting. var absorptionTimePickerInterval = TimeInterval(minutes: 30) @@ -69,7 +68,6 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable didSet { if quantity != oldValue { updateLastEntryDate() - warningMessagePresented = false } updateContinueButtonEnabled() } @@ -494,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 } @@ -534,12 +540,14 @@ final class CarbEntryViewController: LoopChartsTableViewController, Identifiable navigationDelegate.showMaxQuantityValidationWarning(for: self, maxQuantityGrams: maxCarbEntryQuantity.doubleValue(for: .gram())) return false } - if (!warningMessagePresented && - quantity.doubleValue(for: .gram()) > warningCarbEntryQuantity.doubleValue(for: .gram()) ) - { - navigationDelegate.showWarningQuantityValidationWarning(for: self, warningQuantityGrams: warningCarbEntryQuantity.doubleValue(for: .gram())) - warningMessagePresented = true - 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 } 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 From 8b4c404eec65344040815fc84f194791fc10e1d9 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 18 Dec 2022 14:47:57 -0600 Subject: [PATCH 6/6] Update comment --- Loop/Models/LoopConstants.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Loop/Models/LoopConstants.swift b/Loop/Models/LoopConstants.swift index 294976a5b8..1f439c08ef 100644 --- a/Loop/Models/LoopConstants.swift +++ b/Loop/Models/LoopConstants.swift @@ -17,7 +17,7 @@ enum LoopConstants { static let maxCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 250) // cannot exceed this value - static let warningCarbEntryQuantity = HKQuantity(unit: .gram(), doubleValue: 99) // user is warned at 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)