Skip to content

Commit e244d1c

Browse files
authored
Merge pull request #4 from loopandlearn/dev-6a9aa44-update
dev 6a9aa44 update
2 parents a2d9212 + 67c791b commit e244d1c

14 files changed

+3100
-260
lines changed

1988/dev_1988.patch

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
Submodule Loop fee85e0..66723d6:
1+
Submodule Loop 3034e45..42c86eb:
22
diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj
3-
index 360db94c..f403686e 100644
3+
index d9e48718..0d2dda5e 100644
44
--- a/Loop/Loop.xcodeproj/project.pbxproj
55
+++ b/Loop/Loop.xcodeproj/project.pbxproj
6-
@@ -516,6 +516,11 @@
6+
@@ -518,6 +518,11 @@
77
C1FB428D21791D2500FAB378 /* PumpManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C3B6F620BBCAA30026CAFA /* PumpManager.swift */; };
88
C1FB428F217921D600FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; };
99
C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; };
@@ -15,7 +15,7 @@ index 360db94c..f403686e 100644
1515
E90909D124E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E90909CC24E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json */; };
1616
E90909D224E34AC500F963D2 /* high_and_rising_with_cob_insulin_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E90909CD24E34AC500F963D2 /* high_and_rising_with_cob_insulin_effect.json */; };
1717
E90909D324E34AC500F963D2 /* high_and_rising_with_cob_predicted_glucose.json in Resources */ = {isa = PBXBuildFile; fileRef = E90909CE24E34AC500F963D2 /* high_and_rising_with_cob_predicted_glucose.json */; };
18-
@@ -1683,6 +1688,11 @@
18+
@@ -1687,6 +1692,11 @@
1919
C1FF3D4B29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
2020
C1FF3D4C29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
2121
C1FF3D4D29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -27,23 +27,23 @@ index 360db94c..f403686e 100644
2727
E90909CC24E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_momentum_effect.json; sourceTree = "<group>"; };
2828
E90909CD24E34AC500F963D2 /* high_and_rising_with_cob_insulin_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_insulin_effect.json; sourceTree = "<group>"; };
2929
E90909CE24E34AC500F963D2 /* high_and_rising_with_cob_predicted_glucose.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_predicted_glucose.json; sourceTree = "<group>"; };
30-
@@ -2309,6 +2319,7 @@
30+
@@ -2314,6 +2324,7 @@
3131
isa = PBXGroup;
3232
children = (
3333
A98556842493F901000FD662 /* AlertStore+SimulatedCoreData.swift */,
3434
+ DDC389FB2A2BC6670066E2E8 /* SettingsView+algorithmExperimentsSection.swift */,
3535
C1D289B422F90A52003FFBD9 /* BasalDeliveryState.swift */,
3636
A9F703722489BC8500C98AD8 /* CarbStore+SimulatedCoreData.swift */,
3737
C17824991E1999FA00D9D25C /* CaseCountable.swift */,
38-
@@ -2395,6 +2406,7 @@
38+
@@ -2400,6 +2411,7 @@
3939
43F64DD81D9C92C900D24DC6 /* TitleSubtitleTableViewCell.swift */,
4040
4311FB9A1F37FE1B00D4C0A7 /* TitleSubtitleTextFieldTableViewCell.swift */,
4141
C1AF062229426300002C1B19 /* ManualGlucoseEntryRow.swift */,
4242
+ DDC389FD2A2C4C830066E2E8 /* GlucoseBasedApplicationFactorSelectionView.swift */,
4343
);
4444
path = Views;
4545
sourceTree = "<group>";
46-
@@ -2436,6 +2448,9 @@
46+
@@ -2441,6 +2453,9 @@
4747
C1F2075B26D6F9B0007AB7EB /* ProfileExpirationAlerter.swift */,
4848
A96DAC2B2838F31200D94E38 /* SharedLogging.swift */,
4949
7E69CFFB2A16A77E00203CBD /* ResetLoopManager.swift */,
@@ -53,39 +53,39 @@ index 360db94c..f403686e 100644
5353
);
5454
path = Managers;
5555
sourceTree = "<group>";
56-
@@ -3866,6 +3881,7 @@
56+
@@ -3872,6 +3887,7 @@
5757
C1201E2C23ECDBD0002DA84A /* WatchContextRequestUserInfo.swift in Sources */,
5858
1D49795824E7289700948F05 /* ServicesViewModel.swift in Sources */,
5959
1D4A3E2D2478628500FD601B /* StoredAlert+CoreDataClass.swift in Sources */,
6060
+ DDC389FA2A2B62470066E2E8 /* ConstantDosingStrategy.swift in Sources */,
6161
892D7C5123B54A15008A9656 /* CarbEntryViewController.swift in Sources */,
6262
B4E202302661063E009421B5 /* AutomaticDosingStatus.swift in Sources */,
6363
C191D2A125B3ACAA00C26C0B /* DosingStrategySelectionView.swift in Sources */,
64-
@@ -3897,6 +3913,7 @@
64+
@@ -3903,6 +3919,7 @@
6565
1DB619AC270BAD3D006C9D07 /* VersionUpdateViewModel.swift in Sources */,
6666
A9C62D882331703100535612 /* Service.swift in Sources */,
6767
89CAB36324C8FE96009EE3CE /* PredictedGlucoseChartView.swift in Sources */,
6868
+ DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */,
6969
4F6663941E905FD2009E74FC /* ChartColorPalette+Loop.swift in Sources */,
7070
A9F703732489BC8500C98AD8 /* CarbStore+SimulatedCoreData.swift in Sources */,
7171
4328E0351CFC0AE100E199AA /* WatchDataManager.swift in Sources */,
72-
@@ -3926,6 +3943,7 @@
72+
@@ -3933,6 +3950,7 @@
7373
E9B080B1253BDA6300BAD8F8 /* UserDefaults+LoopIntents.swift in Sources */,
7474
C1AF062329426300002C1B19 /* ManualGlucoseEntryRow.swift in Sources */,
7575
C148CEE724FD91BD00711B3B /* DeliveryUncertaintyAlertManager.swift in Sources */,
7676
+ DDC389FC2A2BC6670066E2E8 /* SettingsView+algorithmExperimentsSection.swift in Sources */,
7777
1D12D3B92548EFDD00B53E8B /* main.swift in Sources */,
7878
435400341C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */,
7979
A9DCF32A25B0FABF00C89088 /* LoopUIColorPalette+Default.swift in Sources */,
80-
@@ -3960,6 +3978,7 @@
80+
@@ -3967,6 +3985,7 @@
8181
A97F250825E056D500F0EE19 /* OnboardingManager.swift in Sources */,
8282
438D42F91D7C88BC003244B0 /* PredictionInputEffect.swift in Sources */,
8383
892A5D692230C41D008961AB /* RangeReplaceableCollection.swift in Sources */,
8484
+ DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */,
8585
4F70C2101DE8FAC5006380B7 /* ExtensionDataManager.swift in Sources */,
8686
43DFB62320D4CAE7008A7BAE /* PumpManager.swift in Sources */,
8787
A9FB75F1252BE320004C7D3F /* BolusDosingDecision.swift in Sources */,
88-
@@ -3967,6 +3986,7 @@
88+
@@ -3974,6 +3993,7 @@
8989
431A8C401EC6E8AB00823B9C /* CircleMaskView.swift in Sources */,
9090
1D05219D2469F1F5000EBBDE /* AlertStore.swift in Sources */,
9191
439897371CD2F80600223065 /* AnalyticsServicesManager.swift in Sources */,
@@ -235,7 +235,7 @@ index ffc66ee3..1b1bab1f 100644
235235
@@ -1698,7 +1698,23 @@ extension LoopDataManager {
236236
return self.delegate?.roundBolusVolume(units: units) ?? units
237237
}
238-
238+
239239
- let maxAutomaticBolus = min(iobHeadroom, maxBolus! * LoopConstants.bolusPartialApplicationFactor)
240240
+ // Create dosing strategy based on user setting
241241
+ let applicationFactorStrategy: ApplicationFactorStrategy = UserDefaults.standard.bool(forKey: "applyExperimentalGlucoseBasedApplicationFactor")
@@ -251,10 +251,10 @@ index ffc66ee3..1b1bab1f 100644
251251
+ )
252252
+
253253
+ self.logger.debug(" *** Glucose: %{public}@, effectiveBolusApplicationFactor: %.2f", glucose.quantity.description, effectiveBolusApplicationFactor)
254-
+
254+
+
255255
+ // If a user customizes maxPartialApplicationFactor > 1; this respects maxBolus
256256
+ let maxAutomaticBolus = min(iobHeadroom, maxBolus! * min(effectiveBolusApplicationFactor, 1.0))
257-
257+
258258
dosingRecommendation = predictedGlucose.recommendedAutomaticDose(
259259
to: glucoseTargetRange!,
260260
@@ -1708,7 +1724,7 @@ extension LoopDataManager {
@@ -276,7 +276,7 @@ index ffc66ee3..1b1bab1f 100644
276276
"",
277277
diff --git a/Loop/Loop/Views/GlucoseBasedApplicationFactorSelectionView.swift b/Loop/Loop/Views/GlucoseBasedApplicationFactorSelectionView.swift
278278
new file mode 100644
279-
index 00000000..1e78c81e
279+
index 00000000..53ff05cd
280280
--- /dev/null
281281
+++ b/Loop/Loop/Views/GlucoseBasedApplicationFactorSelectionView.swift
282282
@@ -0,0 +1,55 @@
@@ -336,17 +336,17 @@ index 00000000..1e78c81e
336336
+ }
337337
+}
338338
diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift
339-
index dc3f6ec3..24032203 100644
339+
index bd4e86e8..c8320e56 100644
340340
--- a/Loop/Loop/Views/SettingsView.swift
341341
+++ b/Loop/Loop/Views/SettingsView.swift
342342
@@ -30,6 +30,7 @@ public struct SettingsView: View {
343343
@State private var therapySettingsIsPresented: Bool = false
344344
@State private var deletePumpDataAlertIsPresented = false
345345
@State private var deleteCGMDataAlertIsPresented = false
346346
+ @State internal var isGlucoseBasedApplicationFactorEnabled = UserDefaults.standard.bool(forKey: "applyExperimentalGlucoseBasedApplicationFactor")
347-
347+
348348
var localizedAppNameAndVersion: String
349-
349+
350350
@@ -50,6 +51,9 @@ public struct SettingsView: View {
351351
if FeatureFlags.automaticBolusEnabled {
352352
dosingStrategySection

1988/dev_1988_2008.patch

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
Submodule Loop a20b958..8b119a6:
1+
Submodule Loop ac74bec..c429521:
22
diff --git a/Loop/Loop.xcodeproj/project.pbxproj b/Loop/Loop.xcodeproj/project.pbxproj
3-
index a27a4503..9c023c06 100644
3+
index 14b266c6..3f527b16 100644
44
--- a/Loop/Loop.xcodeproj/project.pbxproj
55
+++ b/Loop/Loop.xcodeproj/project.pbxproj
6-
@@ -519,6 +519,10 @@
6+
@@ -521,6 +521,10 @@
77
C1FB4290217922A100FAB378 /* PumpManagerUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1FB428E217921D600FAB378 /* PumpManagerUI.swift */; };
88
DD3DBD272A33AEC8000F8B5B /* SettingsView+algorithmExperimentsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD262A33AEC8000F8B5B /* SettingsView+algorithmExperimentsSection.swift */; };
99
DD3DBD292A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */; };
@@ -14,7 +14,7 @@ index a27a4503..9c023c06 100644
1414
E90909D124E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E90909CC24E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json */; };
1515
E90909D224E34AC500F963D2 /* high_and_rising_with_cob_insulin_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E90909CD24E34AC500F963D2 /* high_and_rising_with_cob_insulin_effect.json */; };
1616
E90909D324E34AC500F963D2 /* high_and_rising_with_cob_predicted_glucose.json in Resources */ = {isa = PBXBuildFile; fileRef = E90909CE24E34AC500F963D2 /* high_and_rising_with_cob_predicted_glucose.json */; };
17-
@@ -1689,6 +1693,10 @@
17+
@@ -1693,6 +1697,10 @@
1818
C1FF3D4D29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1919
DD3DBD262A33AEC8000F8B5B /* SettingsView+algorithmExperimentsSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SettingsView+algorithmExperimentsSection.swift"; sourceTree = "<group>"; };
2020
DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntegralRetrospectiveCorrectionSelectionView.swift; sourceTree = "<group>"; };
@@ -25,15 +25,15 @@ index a27a4503..9c023c06 100644
2525
E90909CC24E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_momentum_effect.json; sourceTree = "<group>"; };
2626
E90909CD24E34AC500F963D2 /* high_and_rising_with_cob_insulin_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_insulin_effect.json; sourceTree = "<group>"; };
2727
E90909CE24E34AC500F963D2 /* high_and_rising_with_cob_predicted_glucose.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_predicted_glucose.json; sourceTree = "<group>"; };
28-
@@ -2404,6 +2412,7 @@
28+
@@ -2409,6 +2417,7 @@
2929
4311FB9A1F37FE1B00D4C0A7 /* TitleSubtitleTextFieldTableViewCell.swift */,
3030
C1AF062229426300002C1B19 /* ManualGlucoseEntryRow.swift */,
3131
DD3DBD282A33AFE9000F8B5B /* IntegralRetrospectiveCorrectionSelectionView.swift */,
3232
+ DDC389FD2A2C4C830066E2E8 /* GlucoseBasedApplicationFactorSelectionView.swift */,
3333
);
3434
path = Views;
3535
sourceTree = "<group>";
36-
@@ -2445,6 +2454,9 @@
36+
@@ -2450,6 +2459,9 @@
3737
C1F2075B26D6F9B0007AB7EB /* ProfileExpirationAlerter.swift */,
3838
A96DAC2B2838F31200D94E38 /* SharedLogging.swift */,
3939
7E69CFFB2A16A77E00203CBD /* ResetLoopManager.swift */,
@@ -43,31 +43,31 @@ index a27a4503..9c023c06 100644
4343
);
4444
path = Managers;
4545
sourceTree = "<group>";
46-
@@ -3876,6 +3888,7 @@
46+
@@ -3882,6 +3894,7 @@
4747
C1201E2C23ECDBD0002DA84A /* WatchContextRequestUserInfo.swift in Sources */,
4848
1D49795824E7289700948F05 /* ServicesViewModel.swift in Sources */,
4949
1D4A3E2D2478628500FD601B /* StoredAlert+CoreDataClass.swift in Sources */,
5050
+ DDC389FA2A2B62470066E2E8 /* ConstantDosingStrategy.swift in Sources */,
5151
892D7C5123B54A15008A9656 /* CarbEntryViewController.swift in Sources */,
5252
B4E202302661063E009421B5 /* AutomaticDosingStatus.swift in Sources */,
5353
C191D2A125B3ACAA00C26C0B /* DosingStrategySelectionView.swift in Sources */,
54-
@@ -3909,6 +3922,7 @@
54+
@@ -3915,6 +3928,7 @@
5555
1DB619AC270BAD3D006C9D07 /* VersionUpdateViewModel.swift in Sources */,
5656
A9C62D882331703100535612 /* Service.swift in Sources */,
5757
89CAB36324C8FE96009EE3CE /* PredictedGlucoseChartView.swift in Sources */,
5858
+ DDC389F82A2B620B0066E2E8 /* GlucoseBasedApplicationFactorStrategy.swift in Sources */,
5959
4F6663941E905FD2009E74FC /* ChartColorPalette+Loop.swift in Sources */,
6060
A9F703732489BC8500C98AD8 /* CarbStore+SimulatedCoreData.swift in Sources */,
6161
4328E0351CFC0AE100E199AA /* WatchDataManager.swift in Sources */,
62-
@@ -3972,6 +3986,7 @@
62+
@@ -3979,6 +3993,7 @@
6363
A97F250825E056D500F0EE19 /* OnboardingManager.swift in Sources */,
6464
438D42F91D7C88BC003244B0 /* PredictionInputEffect.swift in Sources */,
6565
892A5D692230C41D008961AB /* RangeReplaceableCollection.swift in Sources */,
6666
+ DDC389F62A2B61750066E2E8 /* ApplicationFactorStrategy.swift in Sources */,
6767
4F70C2101DE8FAC5006380B7 /* ExtensionDataManager.swift in Sources */,
6868
43DFB62320D4CAE7008A7BAE /* PumpManager.swift in Sources */,
6969
A9FB75F1252BE320004C7D3F /* BolusDosingDecision.swift in Sources */,
70-
@@ -3979,6 +3994,7 @@
70+
@@ -3986,6 +4001,7 @@
7171
431A8C401EC6E8AB00823B9C /* CircleMaskView.swift in Sources */,
7272
1D05219D2469F1F5000EBBDE /* AlertStore.swift in Sources */,
7373
439897371CD2F80600223065 /* AnalyticsServicesManager.swift in Sources */,
@@ -91,7 +91,7 @@ index b6f07ba1..b3a5091e 100644
9191
extension SettingsView {
9292
internal var algorithmExperimentsSection: some View {
9393
Section(header: SectionHeader(label: NSLocalizedString("Algorithm Experiments ⚠️", comment: "The title of the Algorithm Experiments section in settings"))) {
94-
-
94+
-
9595
+ NavigationLink(destination: GlucoseBasedApplicationFactorSelectionView(isGlucoseBasedApplicationFactorEnabled: $isGlucoseBasedApplicationFactorEnabled)) {
9696
+ HStack {
9797
+ Text("Glucose Based Partial Application")
@@ -107,7 +107,7 @@ index b6f07ba1..b3a5091e 100644
107107
}
108108
}
109109
- }
110-
+ }
110+
+ }
111111
}
112112
}
113113
diff --git a/Loop/Loop/Managers/ApplicationFactorStrategy.swift b/Loop/Loop/Managers/ApplicationFactorStrategy.swift
@@ -220,7 +220,7 @@ index 15c593e7..8133aa84 100644
220220
@@ -1698,7 +1698,23 @@ extension LoopDataManager {
221221
return self.delegate?.roundBolusVolume(units: units) ?? units
222222
}
223-
223+
224224
- let maxAutomaticBolus = min(iobHeadroom, maxBolus! * LoopConstants.bolusPartialApplicationFactor)
225225
+ // Create dosing strategy based on user setting
226226
+ let applicationFactorStrategy: ApplicationFactorStrategy = UserDefaults.standard.bool(forKey: "applyExperimentalGlucoseBasedApplicationFactor")
@@ -236,10 +236,10 @@ index 15c593e7..8133aa84 100644
236236
+ )
237237
+
238238
+ self.logger.debug(" *** Glucose: %{public}@, effectiveBolusApplicationFactor: %.2f", glucose.quantity.description, effectiveBolusApplicationFactor)
239-
+
239+
+
240240
+ // If a user customizes maxPartialApplicationFactor > 1; this respects maxBolus
241241
+ let maxAutomaticBolus = min(iobHeadroom, maxBolus! * min(effectiveBolusApplicationFactor, 1.0))
242-
242+
243243
dosingRecommendation = predictedGlucose.recommendedAutomaticDose(
244244
to: glucoseTargetRange!,
245245
@@ -1708,7 +1724,7 @@ extension LoopDataManager {
@@ -261,7 +261,7 @@ index 15c593e7..8133aa84 100644
261261
"",
262262
diff --git a/Loop/Loop/Views/GlucoseBasedApplicationFactorSelectionView.swift b/Loop/Loop/Views/GlucoseBasedApplicationFactorSelectionView.swift
263263
new file mode 100644
264-
index 00000000..1e78c81e
264+
index 00000000..53ff05cd
265265
--- /dev/null
266266
+++ b/Loop/Loop/Views/GlucoseBasedApplicationFactorSelectionView.swift
267267
@@ -0,0 +1,55 @@
@@ -321,16 +321,16 @@ index 00000000..1e78c81e
321321
+ }
322322
+}
323323
diff --git a/Loop/Loop/Views/SettingsView.swift b/Loop/Loop/Views/SettingsView.swift
324-
index 2615596c..12255a62 100644
324+
index 1ae3e5af..0e8a029d 100644
325325
--- a/Loop/Loop/Views/SettingsView.swift
326326
+++ b/Loop/Loop/Views/SettingsView.swift
327327
@@ -31,7 +31,8 @@ public struct SettingsView: View {
328328
@State private var deletePumpDataAlertIsPresented = false
329329
@State private var deleteCGMDataAlertIsPresented = false
330330
@State internal var isIntegralRetrospectiveCorrectionEnabled = UserDefaults.standard.bool(forKey: "isExperimentalIntegralRetrospectiveCorrectionEnabled")
331-
-
331+
-
332332
+ @State internal var isGlucoseBasedApplicationFactorEnabled = UserDefaults.standard.bool(forKey: "applyExperimentalGlucoseBasedApplicationFactor")
333333
+
334334
var localizedAppNameAndVersion: String
335-
335+
336336
public init(viewModel: SettingsViewModel, localizedAppNameAndVersion: String) {

0 commit comments

Comments
 (0)