Skip to content

Commit f89a105

Browse files
authored
Merge branch 'loopandlearn:main' into Main
2 parents c88368f + c4cdc9d commit f89a105

70 files changed

Lines changed: 654 additions & 121 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Config.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
unique_id = ${DEVELOPMENT_TEAM}
77

88
//Version (DEFAULT)
9-
LOOP_FOLLOW_MARKETING_VERSION = 4.4.0
9+
LOOP_FOLLOW_MARKETING_VERSION = 4.5.0

LoopFollow.xcodeproj/project.pbxproj

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
6589CC712E9E814F00BB18FE /* AlarmSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6589CC702E9E814F00BB18FE /* AlarmSelectionView.swift */; };
3535
6589CC752E9EAFB700BB18FE /* SettingsMigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6589CC742E9EAFB700BB18FE /* SettingsMigrationManager.swift */; };
3636
65E153C32E4BB69100693A4F /* URLTokenValidationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65E153C22E4BB69100693A4F /* URLTokenValidationView.swift */; };
37-
65E153C32E4BB69100693A4F /* URLTokenValidationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65E153C22E4BB69100693A4F /* URLTokenValidationView.swift */; };
3837
65E8A2862E44B0300065037B /* VolumeButtonHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65E8A2852E44B0300065037B /* VolumeButtonHandler.swift */; };
3938
DD0247592DB2E89600FCADF6 /* AlarmCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD0247582DB2E89600FCADF6 /* AlarmCondition.swift */; };
4039
DD0247712DB4337700FCADF6 /* BuildExpireCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD02475B2DB2E8FB00FCADF6 /* BuildExpireCondition.swift */; };
@@ -71,6 +70,7 @@
7170
DD16AF112C997B4600FB655A /* LoadingButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD16AF102C997B4600FB655A /* LoadingButtonView.swift */; };
7271
DD1D52B92E1EB5DC00432050 /* TabPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD1D52B82E1EB5DC00432050 /* TabPosition.swift */; };
7372
DD1D52BB2E1EB60B00432050 /* MoreMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD1D52BA2E1EB60B00432050 /* MoreMenuViewController.swift */; };
73+
DD1D52C02E4C100000000001 /* AppearanceMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD1D52BF2E4C100000000001 /* AppearanceMode.swift */; };
7474
DD2C2E4F2D3B8AF1006413A5 /* NightscoutSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD2C2E4E2D3B8AEC006413A5 /* NightscoutSettingsView.swift */; };
7575
DD2C2E512D3B8B0C006413A5 /* NightscoutSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD2C2E502D3B8B0B006413A5 /* NightscoutSettingsViewModel.swift */; };
7676
DD485F142E454B2600CE8CBF /* SecureMessenger.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD485F132E454B2600CE8CBF /* SecureMessenger.swift */; };
@@ -197,7 +197,9 @@
197197
DDC7E5472DBD8A1600EB1127 /* AlarmEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC7E5402DBD8A1600EB1127 /* AlarmEditor.swift */; };
198198
DDC7E5CF2DC77C2000EB1127 /* SnoozerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDC7E5CE2DC77C2000EB1127 /* SnoozerViewModel.swift */; };
199199
DDCC3A4B2DDBB5E4006F1C10 /* BatteryCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A4A2DDBB5E4006F1C10 /* BatteryCondition.swift */; };
200-
DDCC3A4D2DDBB77C006F1C10 /* BatteryAlarmEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A4C2DDBB77C006F1C10 /* BatteryAlarmEditor.swift */; };
200+
DDCC3A502DDED000006F1C10 /* PumpBatteryCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A512DDED000006F1C10 /* PumpBatteryCondition.swift */; };
201+
DDCC3A4D2DDBB77C006F1C10 /* PhoneBatteryAlarmEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A4C2DDBB77C006F1C10 /* PhoneBatteryAlarmEditor.swift */; };
202+
DDCC3A5B2DDE2000006F1C10 /* PumpBatteryAlarmEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A5C2DDE2000006F1C10 /* PumpBatteryAlarmEditor.swift */; };
201203
DDCC3A4F2DDC5B54006F1C10 /* BatteryDropCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A4E2DDC5B54006F1C10 /* BatteryDropCondition.swift */; };
202204
DDCC3A542DDC5D62006F1C10 /* BatteryDropAlarmEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A532DDC5D62006F1C10 /* BatteryDropAlarmEditor.swift */; };
203205
DDCC3A562DDC9617006F1C10 /* MissedBolusCondition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDCC3A552DDC9617006F1C10 /* MissedBolusCondition.swift */; };
@@ -434,7 +436,6 @@
434436
6589CC702E9E814F00BB18FE /* AlarmSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmSelectionView.swift; sourceTree = "<group>"; };
435437
6589CC742E9EAFB700BB18FE /* SettingsMigrationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsMigrationManager.swift; sourceTree = "<group>"; };
436438
65E153C22E4BB69100693A4F /* URLTokenValidationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLTokenValidationView.swift; sourceTree = "<group>"; };
437-
65E153C22E4BB69100693A4F /* URLTokenValidationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLTokenValidationView.swift; sourceTree = "<group>"; };
438439
65E8A2852E44B0300065037B /* VolumeButtonHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VolumeButtonHandler.swift; sourceTree = "<group>"; };
439440
A7D55B42A22051DAD69E89D0 /* Pods_LoopFollow.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LoopFollow.framework; sourceTree = BUILT_PRODUCTS_DIR; };
440441
DD0247582DB2E89600FCADF6 /* AlarmCondition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmCondition.swift; sourceTree = "<group>"; };
@@ -472,6 +473,7 @@
472473
DD16AF102C997B4600FB655A /* LoadingButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingButtonView.swift; sourceTree = "<group>"; };
473474
DD1D52B82E1EB5DC00432050 /* TabPosition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabPosition.swift; sourceTree = "<group>"; };
474475
DD1D52BA2E1EB60B00432050 /* MoreMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoreMenuViewController.swift; sourceTree = "<group>"; };
476+
DD1D52BF2E4C100000000001 /* AppearanceMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceMode.swift; sourceTree = "<group>"; };
475477
DD2C2E4E2D3B8AEC006413A5 /* NightscoutSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutSettingsView.swift; sourceTree = "<group>"; };
476478
DD2C2E502D3B8B0B006413A5 /* NightscoutSettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NightscoutSettingsViewModel.swift; sourceTree = "<group>"; };
477479
DD485F132E454B2600CE8CBF /* SecureMessenger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureMessenger.swift; sourceTree = "<group>"; };
@@ -597,7 +599,9 @@
597599
DDC7E5402DBD8A1600EB1127 /* AlarmEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlarmEditor.swift; sourceTree = "<group>"; };
598600
DDC7E5CE2DC77C2000EB1127 /* SnoozerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SnoozerViewModel.swift; sourceTree = "<group>"; };
599601
DDCC3A4A2DDBB5E4006F1C10 /* BatteryCondition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryCondition.swift; sourceTree = "<group>"; };
600-
DDCC3A4C2DDBB77C006F1C10 /* BatteryAlarmEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryAlarmEditor.swift; sourceTree = "<group>"; };
602+
DDCC3A512DDED000006F1C10 /* PumpBatteryCondition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpBatteryCondition.swift; sourceTree = "<group>"; };
603+
DDCC3A4C2DDBB77C006F1C10 /* PhoneBatteryAlarmEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneBatteryAlarmEditor.swift; sourceTree = "<group>"; };
604+
DDCC3A5C2DDE2000006F1C10 /* PumpBatteryAlarmEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpBatteryAlarmEditor.swift; sourceTree = "<group>"; };
601605
DDCC3A4E2DDC5B54006F1C10 /* BatteryDropCondition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryDropCondition.swift; sourceTree = "<group>"; };
602606
DDCC3A532DDC5D62006F1C10 /* BatteryDropAlarmEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryDropAlarmEditor.swift; sourceTree = "<group>"; };
603607
DDCC3A552DDC9617006F1C10 /* MissedBolusCondition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MissedBolusCondition.swift; sourceTree = "<group>"; };
@@ -886,6 +890,7 @@
886890
DDCC3A552DDC9617006F1C10 /* MissedBolusCondition.swift */,
887891
DDCC3A4E2DDC5B54006F1C10 /* BatteryDropCondition.swift */,
888892
DDCC3A4A2DDBB5E4006F1C10 /* BatteryCondition.swift */,
893+
DDCC3A512DDED000006F1C10 /* PumpBatteryCondition.swift */,
889894
DDB9FC7A2DDB573F00EFAA76 /* IOBCondition.swift */,
890895
DDC6CA482DD8E47A0060EE25 /* PumpVolumeCondition.swift */,
891896
DDC6CA442DD8D8E60060EE25 /* PumpChangeCondition.swift */,
@@ -1130,7 +1135,8 @@
11301135
children = (
11311136
DDCC3A572DDC9655006F1C10 /* MissedBolusAlarmEditor.swift */,
11321137
DDCC3A532DDC5D62006F1C10 /* BatteryDropAlarmEditor.swift */,
1133-
DDCC3A4C2DDBB77C006F1C10 /* BatteryAlarmEditor.swift */,
1138+
DDCC3A4C2DDBB77C006F1C10 /* PhoneBatteryAlarmEditor.swift */,
1139+
DDCC3A5C2DDE2000006F1C10 /* PumpBatteryAlarmEditor.swift */,
11341140
DDB9FC7C2DDB575300EFAA76 /* IOBAlarmEditor.swift */,
11351141
DDC6CA4A2DD8E4960060EE25 /* PumpVolumeAlarmEditor.swift */,
11361142
DDC6CA462DD8D9010060EE25 /* PumpChangeAlarmEditor.swift */,
@@ -1538,6 +1544,7 @@
15381544
DD026E582EA2C8A200A39CB5 /* InsulinPrecisionManager.swift */,
15391545
656F8C112E49F3780008DC1D /* QRCodeGenerator.swift */,
15401546
DD4A407D2E6AFEE6007B318B /* AuthService.swift */,
1547+
DD1D52BF2E4C100000000001 /* AppearanceMode.swift */,
15411548
DD1D52B82E1EB5DC00432050 /* TabPosition.swift */,
15421549
DD83164B2DE4DB3A004467AA /* BinaryFloatingPoint+localized.swift */,
15431550
DD4AFB3A2DB55CB600BB593F /* TimeOfDay.swift */,
@@ -1949,6 +1956,7 @@
19491956
DDC7E5152DBCFA7900EB1127 /* SnoozerViewController.swift in Sources */,
19501957
DD7F4C072DD5042F00D449E9 /* OverrideStartAlarmEditor.swift in Sources */,
19511958
DDCC3A4B2DDBB5E4006F1C10 /* BatteryCondition.swift in Sources */,
1959+
DDCC3A502DDED000006F1C10 /* PumpBatteryCondition.swift in Sources */,
19521960
DDDF6F492D479AF000884336 /* NoRemoteView.swift in Sources */,
19531961
656F8C142E49F3D20008DC1D /* RemoteCommandSettings.swift in Sources */,
19541962
DD12D4872E1705E6004E0112 /* AlarmsContainerView.swift in Sources */,
@@ -2064,7 +2072,8 @@
20642072
DDCC3A542DDC5D62006F1C10 /* BatteryDropAlarmEditor.swift in Sources */,
20652073
DD13BC772C3FD64E0062313B /* InfoData.swift in Sources */,
20662074
DD13BC752C3FD6210062313B /* InfoType.swift in Sources */,
2067-
DDCC3A4D2DDBB77C006F1C10 /* BatteryAlarmEditor.swift in Sources */,
2075+
DDCC3A4D2DDBB77C006F1C10 /* PhoneBatteryAlarmEditor.swift in Sources */,
2076+
DDCC3A5B2DDE2000006F1C10 /* PumpBatteryAlarmEditor.swift in Sources */,
20682077
DDC6CA492DD8E47A0060EE25 /* PumpVolumeCondition.swift in Sources */,
20692078
DD9ACA0A2D33095600415D8A /* MinAgoTask.swift in Sources */,
20702079
DD9ED0CC2D35526E000D2A63 /* SearchBar.swift in Sources */,
@@ -2144,6 +2153,7 @@
21442153
DD493AE52ACF2383009A6922 /* Treatments.swift in Sources */,
21452154
DD7F4C112DD51ED900D449E9 /* TempTargetStartAlarmEditor.swift in Sources */,
21462155
DD1D52B92E1EB5DC00432050 /* TabPosition.swift in Sources */,
2156+
DD1D52C02E4C100000000001 /* AppearanceMode.swift in Sources */,
21472157
DD50C7552D0862770057AE6F /* ContactImageUpdater.swift in Sources */,
21482158
654132EA2E19F24800BDBE08 /* TOTPGenerator.swift in Sources */,
21492159
6541341C2E1DC28000BDBE08 /* DateExtensions.swift in Sources */,
@@ -2211,7 +2221,7 @@
22112221
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
22122222
CODE_SIGN_STYLE = Automatic;
22132223
CURRENT_PROJECT_VERSION = 1;
2214-
DEVELOPMENT_TEAM = "$(LF_DEVELOPMENT_TEAM)";
2224+
DEVELOPMENT_TEAM = "$(LF_DEVELOPMENT_TEAM)";
22152225
ENABLE_USER_SCRIPT_SANDBOXING = YES;
22162226
GCC_C_LANGUAGE_STANDARD = gnu17;
22172227
GENERATE_INFOPLIST_FILE = YES;
@@ -2238,7 +2248,7 @@
22382248
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
22392249
CODE_SIGN_STYLE = Automatic;
22402250
CURRENT_PROJECT_VERSION = 1;
2241-
DEVELOPMENT_TEAM = "$(LF_DEVELOPMENT_TEAM)";
2251+
DEVELOPMENT_TEAM = "$(LF_DEVELOPMENT_TEAM)";
22422252
ENABLE_USER_SCRIPT_SANDBOXING = YES;
22432253
GCC_C_LANGUAGE_STANDARD = gnu17;
22442254
GENERATE_INFOPLIST_FILE = YES;

LoopFollow/Alarm/AddAlarm/AddAlarmSheet.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@ struct AddAlarmSheet: View {
4040
}
4141
}
4242
}
43-
.preferredColorScheme(Storage.shared.forceDarkMode.value ? .dark : nil)
43+
.preferredColorScheme(Storage.shared.appearanceMode.value.colorScheme)
4444
}
4545
}

LoopFollow/Alarm/Alarm.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,9 @@ struct Alarm: Identifiable, Codable, Equatable {
318318
case .pump:
319319
soundFile = .marimbaDescend
320320
threshold = 20
321+
case .pumpBattery:
322+
soundFile = .machineCharge
323+
threshold = 20
321324
case .battery:
322325
soundFile = .machineCharge
323326
threshold = 20
@@ -363,7 +366,7 @@ extension AlarmType {
363366
return .glucose
364367
case .iob, .cob, .missedBolus, .recBolus:
365368
return .insulin
366-
case .battery, .batteryDrop, .pump, .pumpChange,
369+
case .battery, .batteryDrop, .pump, .pumpBattery, .pumpChange,
367370
.sensorChange, .notLooping, .buildExpire:
368371
return .device
369372
case .overrideStart, .overrideEnd, .tempTargetStart, .tempTargetEnd:
@@ -385,6 +388,7 @@ extension AlarmType {
385388
case .battery: return "battery.25"
386389
case .batteryDrop: return "battery.100.bolt"
387390
case .pump: return "drop"
391+
case .pumpBattery: return "powermeter"
388392
case .pumpChange: return "arrow.triangle.2.circlepath"
389393
case .sensorChange: return "sensor.tag.radiowaves.forward"
390394
case .notLooping: return "circle.slash"
@@ -411,6 +415,7 @@ extension AlarmType {
411415
case .battery: return "Phone battery low."
412416
case .batteryDrop: return "Battery drops quickly."
413417
case .pump: return "Reservoir level low."
418+
case .pumpBattery: return "Pump battery low."
414419
case .pumpChange: return "Pump change due."
415420
case .sensorChange: return "Sensor change due."
416421
case .notLooping: return "Loop hasn’t completed."
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// LoopFollow
2+
// PumpBatteryCondition.swift
3+
4+
import Foundation
5+
6+
struct PumpBatteryCondition: AlarmCondition {
7+
static let type: AlarmType = .pumpBattery
8+
init() {}
9+
10+
func evaluate(alarm: Alarm, data: AlarmData, now _: Date) -> Bool {
11+
guard let limit = alarm.threshold, limit > 0 else { return false }
12+
guard let level = data.latestPumpBattery else { return false }
13+
14+
return level <= limit
15+
}
16+
}

LoopFollow/Alarm/AlarmData.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ struct AlarmData: Codable {
2020
let IOB: Double?
2121
let recentBoluses: [BolusEntry]
2222
let latestBattery: Double?
23+
let latestPumpBattery: Double?
2324
let batteryHistory: [DataStructs.batteryStruct]
2425
let recentCarbs: [CarbSample]
2526
}

LoopFollow/Alarm/AlarmEditing/AlarmEditor.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ struct AlarmEditor: View {
4141
}
4242
.navigationTitle(alarm.type.rawValue)
4343
}
44-
.preferredColorScheme(Storage.shared.forceDarkMode.value ? .dark : nil)
44+
.preferredColorScheme(Storage.shared.appearanceMode.value.colorScheme)
4545
}
4646

4747
@ViewBuilder
@@ -77,8 +77,9 @@ struct AlarmEditor: View {
7777
case .sensorChange: SensorAgeAlarmEditor(alarm: $alarm)
7878
case .pumpChange: PumpChangeAlarmEditor(alarm: $alarm)
7979
case .pump: PumpVolumeAlarmEditor(alarm: $alarm)
80+
case .pumpBattery: PumpBatteryAlarmEditor(alarm: $alarm)
8081
case .iob: IOBAlarmEditor(alarm: $alarm)
81-
case .battery: BatteryAlarmEditor(alarm: $alarm)
82+
case .battery: PhoneBatteryAlarmEditor(alarm: $alarm)
8283
case .batteryDrop: BatteryDropAlarmEditor(alarm: $alarm)
8384
case .missedBolus: MissedBolusAlarmEditor(alarm: $alarm)
8485
}

LoopFollow/Alarm/AlarmEditing/Editors/BatteryDropAlarmEditor.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ struct BatteryDropAlarmEditor: View {
1616
AlarmGeneralSection(alarm: $alarm)
1717

1818
AlarmStepperSection(
19-
header: "Battery Drop",
20-
footer: "This alerts you if the battery drops by this much or more.",
19+
header: "Phone Battery Drop",
20+
footer: "This alerts you if the phone battery drops by this much or more.",
2121
title: "Drop Amount",
2222
range: 5 ... 100,
2323
step: 5,

LoopFollow/Alarm/AlarmEditing/Editors/COBAlarmEditor.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ struct COBAlarmEditor: View {
99
var body: some View {
1010
Group {
1111
InfoBanner(
12-
text: "Alerts when Carbs-on-Board exceeds the amount you set below.",
12+
text: "Alerts when Carbs-on-Board is at or above the amount you set below.",
1313
alarmType: alarm.type
1414
)
1515

1616
AlarmGeneralSection(alarm: $alarm)
1717

1818
AlarmStepperSection(
19-
header: "Carbs on Board Limit",
20-
footer: "Alert when carbs-on-board is above this number.",
21-
title: "Above",
19+
header: "Carbs-on-Board Limit",
20+
footer: "Alert when Carbs-on-Board is at or above this number.",
21+
title: "At or Above",
2222
range: 1 ... 200,
2323
step: 1,
2424
unitLabel: "g",

LoopFollow/Alarm/AlarmEditing/Editors/MissedBolusAlarmEditor.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ struct MissedBolusAlarmEditor: View {
4141

4242
AlarmStepperSection(
4343
header: "Ignore small boluses",
44-
footer: "Boluses below this size are ignored.",
45-
title: "Ignore below",
44+
footer: "Boluses at or below this size are ignored.",
45+
title: "At or Below",
4646
range: 0.05 ... 2,
4747
step: 0.05,
4848
unitLabel: "Units",
@@ -51,8 +51,8 @@ struct MissedBolusAlarmEditor: View {
5151

5252
AlarmStepperSection(
5353
header: "Ignore small carbs",
54-
footer: "Carb entries below this amount will not trigger the alarm.",
55-
title: "Below",
54+
footer: "Carb entries at or below this amount will not trigger the alarm.",
55+
title: "At or Below",
5656
range: 0 ... 15,
5757
step: 1,
5858
unitLabel: "Grams",

0 commit comments

Comments
 (0)