Explorar o código

Merge pull request #129 from kskandis/tempTargets

polscm32 hai 1 ano
pai
achega
48ae5461f7

+ 1 - 1
FreeAPS/Sources/Modules/Adjustments/AdjustmentsStateModel+Extensions/AdjustmentsStateModel+Overrides.swift

@@ -32,7 +32,7 @@ extension Adjustments.StateModel {
     @MainActor func disableAllActiveOverrides(except overrideID: NSManagedObjectID? = nil, createOverrideRunEntry: Bool) async {
     @MainActor func disableAllActiveOverrides(except overrideID: NSManagedObjectID? = nil, createOverrideRunEntry: Bool) async {
         // Get ALL NSManagedObject IDs of ALL active Override to cancel every single Override
         // Get ALL NSManagedObject IDs of ALL active Override to cancel every single Override
         let ids = await overrideStorage.loadLatestOverrideConfigurations(fetchLimit: 0)
         let ids = await overrideStorage.loadLatestOverrideConfigurations(fetchLimit: 0)
-        
+
         await viewContext.perform {
         await viewContext.perform {
             do {
             do {
                 // Fetch the existing OverrideStored objects from the context
                 // Fetch the existing OverrideStored objects from the context

+ 3 - 1
FreeAPS/Sources/Modules/Home/View/Chart/DummyCharts.swift

@@ -38,7 +38,9 @@ extension MainChartView {
             }
             }
         }
         }
         .id("DummyMainChart")
         .id("DummyMainChart")
-        .frame(minHeight: geo.size.height * 0.28)
+        .frame(
+            minHeight: geo.size.height * (0.28 - safeAreaSize)
+        )
         .frame(width: screenSize.width - 10)
         .frame(width: screenSize.width - 10)
         .chartXAxis { mainChartXAxis }
         .chartXAxis { mainChartXAxis }
         .chartXScale(domain: startMarker ... endMarker)
         .chartXScale(domain: startMarker ... endMarker)

+ 4 - 1
FreeAPS/Sources/Modules/Home/View/Chart/MainChartView.swift

@@ -7,6 +7,7 @@ let calendar = Calendar.current
 
 
 struct MainChartView: View {
 struct MainChartView: View {
     var geo: GeometryProxy
     var geo: GeometryProxy
+    var safeAreaSize: CGFloat
     var units: GlucoseUnits
     var units: GlucoseUnits
     var hours: Int
     var hours: Int
     var tempTargets: [TempTarget]
     var tempTargets: [TempTarget]
@@ -213,7 +214,9 @@ extension MainChartView {
             .onChange(of: state.insulinFromPersistence) {
             .onChange(of: state.insulinFromPersistence) {
                 state.roundedTotalBolus = state.calculateTINS()
                 state.roundedTotalBolus = state.calculateTINS()
             }
             }
-            .frame(minHeight: geo.size.height * 0.28)
+            .frame(
+                minHeight: geo.size.height * (0.28 - safeAreaSize)
+            )
             .frame(width: fullWidth(viewWidth: screenSize.width))
             .frame(width: fullWidth(viewWidth: screenSize.width))
             .chartXScale(domain: startMarker ... endMarker)
             .chartXScale(domain: startMarker ... endMarker)
             .chartXAxis { mainChartXAxis }
             .chartXAxis { mainChartXAxis }

+ 8 - 12
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -7,6 +7,7 @@ import Swinject
 extension Home {
 extension Home {
     struct RootView: BaseView {
     struct RootView: BaseView {
         let resolver: Resolver
         let resolver: Resolver
+        let safeAreaSize: CGFloat = 0.08
 
 
         @State var state = StateModel()
         @State var state = StateModel()
         @State var isStatusPopupPresented = false
         @State var isStatusPopupPresented = false
@@ -21,7 +22,6 @@ extension Home {
         @State private var statusTitle: String = ""
         @State private var statusTitle: String = ""
         @State var showPumpSelection: Bool = false
         @State var showPumpSelection: Bool = false
         @State var notificationsDisabled = false
         @State var notificationsDisabled = false
-        @State var alertSafetyNotificationsViewHeight = 0
 
 
         struct Buttons: Identifiable {
         struct Buttons: Identifiable {
             let label: String
             let label: String
@@ -335,6 +335,7 @@ extension Home {
             ZStack {
             ZStack {
                 MainChartView(
                 MainChartView(
                     geo: geo,
                     geo: geo,
+                    safeAreaSize: notificationsDisabled == true ? safeAreaSize : 0,
                     units: state.units,
                     units: state.units,
                     hours: state.filteredHours,
                     hours: state.filteredHours,
                     tempTargets: state.tempTargets,
                     tempTargets: state.tempTargets,
@@ -792,7 +793,7 @@ extension Home {
                         )
                         )
                     )
                     )
                     .clipShape(RoundedRectangle(cornerRadius: 15))
                     .clipShape(RoundedRectangle(cornerRadius: 15))
-                    .frame(height: geo.size.height * 0.08)
+                    .frame(height: geo.size.height * safeAreaSize)
                     .coordinateSpace(name: "alertSafetyNotificationsView")
                     .coordinateSpace(name: "alertSafetyNotificationsView")
                     .shadow(
                     .shadow(
                         color: colorScheme == .dark ? Color(red: 0.02745098039, green: 0.1098039216, blue: 0.1411764706) :
                         color: colorScheme == .dark ? Color(red: 0.02745098039, green: 0.1098039216, blue: 0.1411764706) :
@@ -843,17 +844,12 @@ extension Home {
                         pumpView
                         pumpView
                         Spacer()
                         Spacer()
                     }.padding(.leading, 20)
                     }.padding(.leading, 20)
-
-                    if notificationsDisabled {
-                        alertSafetyNotificationsView(geo: geo)
-                            // maybe experiment with safeAreaInset() or similar to avoid overlapping with the dynamic island
-                            .offset(
-                                y: -geo.size
-                                    .height *
-                                    0.075
-                            )
-                    }
                 }.padding(.top, 10)
                 }.padding(.top, 10)
+                    .safeAreaInset(edge: .top, spacing: 0) {
+                        if notificationsDisabled {
+                            alertSafetyNotificationsView(geo: geo)
+                        }
+                    }
 
 
                 mealPanel(geo).padding(.top, UIDevice.adjustPadding(min: nil, max: 30))
                 mealPanel(geo).padding(.top, UIDevice.adjustPadding(min: nil, max: 30))
                     .padding(.bottom, UIDevice.adjustPadding(min: nil, max: 20))
                     .padding(.bottom, UIDevice.adjustPadding(min: nil, max: 20))

+ 1 - 1
FreeAPS/Sources/Router/Router.swift

@@ -21,7 +21,7 @@ enum MessageSubtype: String {
 struct MessageContent {
 struct MessageContent {
     var content: String
     var content: String
     var type: MessageType = .info
     var type: MessageType = .info
-    var subtype: MessageSubtype = .misc
+    var subtype: MessageSubtype = .algorithm
     var title: String = ""
     var title: String = ""
     var useAPN: Bool = true
     var useAPN: Bool = true
     var trigger: UNNotificationTrigger? = nil
     var trigger: UNNotificationTrigger? = nil

+ 3 - 1
FreeAPS/Sources/Services/WatchManager/GarminManager.swift

@@ -160,7 +160,9 @@ extension BaseGarminManager: IQUIOverrideDelegate {
                 "The app Garmin Connect must be installed to use for Trio.\n Go to App Store to download it",
                 "The app Garmin Connect must be installed to use for Trio.\n Go to App Store to download it",
                 comment: ""
                 comment: ""
             ),
             ),
-            type: .warning
+            type: .warning,
+            subtype: .misc,
+            title: NSLocalizedString("Garmin is not available", comment: "")
         )
         )
         router.alertMessage.send(messageCont)
         router.alertMessage.send(messageCont)
     }
     }