Explorar el Código

call allowNotify for APN messages; add BannerStyle Persistent to verboseHint; remove some comments

kskandis hace 1 año
padre
commit
8b9b68cc56

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 4
FreeAPS/Sources/Modules/GlucoseNotificationSettings/View/GlucoseNotificationSettingsRootView.swift


+ 1 - 20
FreeAPS/Sources/Modules/Main/MainStateModel.swift

@@ -112,25 +112,6 @@ extension Main {
             return false
             return false
         }
         }
 
 
-        private func allowNotify(_ message: MessageContent) -> Bool {
-            if message.type == .error { return true } // .errorPump
-            switch message.subtype {
-            case .pump:
-                guard settingsManager.settings.notificationsPump else { return false }
-            case .cgm:
-                guard settingsManager.settings.notificationsCgm else { return false }
-            case .carb:
-                guard settingsManager.settings.notificationsCarb else { return false }
-            case .glucose:
-                guard settingsManager.settings.glucoseNotificationsAlways else { return false }
-            case .algorithm:
-                guard settingsManager.settings.notificationsAlgorithm else { return false }
-            case .misc:
-                return true
-            }
-            return true
-        }
-
         private func showAlertMessage(_ message: MessageContent) {
         private func showAlertMessage(_ message: MessageContent) {
             if message.useAPN, !alertPermissionsChecker.notificationsDisabled
             if message.useAPN, !alertPermissionsChecker.notificationsDisabled
             {
             {
@@ -242,7 +223,7 @@ extension Main {
                 .receive(on: DispatchQueue.main)
                 .receive(on: DispatchQueue.main)
                 .sink { message in
                 .sink { message in
                     guard !self.isApnPumpConfigAction(message) else { return }
                     guard !self.isApnPumpConfigAction(message) else { return }
-                    guard self.allowNotify(message) else { return }
+                    guard self.router.allowNotify(message, self.settingsManager.settings) else { return }
                     self.showAlertMessage(message)
                     self.showAlertMessage(message)
                 }
                 }
                 .store(in: &lifetime)
                 .store(in: &lifetime)

+ 20 - 0
FreeAPS/Sources/Router/Router.swift

@@ -33,6 +33,7 @@ protocol Router {
     var mainSecondaryModalView: CurrentValueSubject<AnyView?, Never> { get }
     var mainSecondaryModalView: CurrentValueSubject<AnyView?, Never> { get }
     var alertMessage: PassthroughSubject<MessageContent, Never> { get }
     var alertMessage: PassthroughSubject<MessageContent, Never> { get }
     func view(for screen: Screen) -> AnyView
     func view(for screen: Screen) -> AnyView
+    func allowNotify(_ message: MessageContent, _ settings: FreeAPSSettings) -> Bool
 }
 }
 
 
 final class BaseRouter: Router {
 final class BaseRouter: Router {
@@ -48,4 +49,23 @@ final class BaseRouter: Router {
     func view(for screen: Screen) -> AnyView {
     func view(for screen: Screen) -> AnyView {
         screen.view(resolver: resolver).asAny()
         screen.view(resolver: resolver).asAny()
     }
     }
+
+    func allowNotify(_ message: MessageContent, _ settings: FreeAPSSettings) -> Bool {
+        if message.type == .error { return true }
+        switch message.subtype {
+        case .pump:
+            guard settings.notificationsPump else { return false }
+        case .cgm:
+            guard settings.notificationsCgm else { return false }
+        case .carb:
+            guard settings.notificationsCarb else { return false }
+        case .glucose:
+            guard settings.glucoseNotificationsAlways else { return false }
+        case .algorithm:
+            guard settings.notificationsAlgorithm else { return false }
+        case .misc:
+            return true
+        }
+        return true
+    }
 }
 }

+ 0 - 7
FreeAPS/Sources/Services/Notifications/AlertPermissionsChecker.swift

@@ -4,17 +4,10 @@ import LoopKit
 import SwiftUI
 import SwiftUI
 import Swinject
 import Swinject
 
 
-// protocol AlertPermissionsCheckerDelegate: AnyObject {
-//    func notificationsPermissions(requiresRiskMitigation: Bool, scheduledDeliveryEnabled: Bool)
-// }
-
 public class AlertPermissionsChecker: ObservableObject, Injectable {
 public class AlertPermissionsChecker: ObservableObject, Injectable {
-//    @Environment(\.appName) private var appName
     private lazy var cancellables = Set<AnyCancellable>()
     private lazy var cancellables = Set<AnyCancellable>()
     private var listeningToNotificationCenter = false
     private var listeningToNotificationCenter = false
 
 
-//    @Injected() private var apsManager: APSManager!
-//    @Injected() private var router: Router!
     @Published var notificationsDisabled: Bool = false
     @Published var notificationsDisabled: Bool = false
 
 
     init(resolver: Resolver) {
     init(resolver: Resolver) {

+ 11 - 9
FreeAPS/Sources/Services/UserNotifications/UserNotificationsManager.swift

@@ -412,19 +412,21 @@ final class BaseUserNotificationsManager: NSObject, UserNotificationsManager, In
         messageSubtype: MessageSubtype = MessageSubtype.misc,
         messageSubtype: MessageSubtype = MessageSubtype.misc,
         action: NotificationAction = NotificationAction.none
         action: NotificationAction = NotificationAction.none
     ) {
     ) {
+        let messageCont = MessageContent(
+            content: content.body,
+            type: messageType,
+            subtype: messageSubtype,
+            title: content.title,
+            useAPN: false,
+            trigger: trigger,
+            action: action
+        )
         if alertPermissionsChecker.notificationsDisabled {
         if alertPermissionsChecker.notificationsDisabled {
-            let messageCont = MessageContent(
-                content: content.body,
-                type: messageType,
-                subtype: messageSubtype,
-                title: content.title,
-                useAPN: false,
-                trigger: trigger,
-                action: action
-            )
             router.alertMessage.send(messageCont)
             router.alertMessage.send(messageCont)
             return
             return
         }
         }
+        guard router.allowNotify(messageCont, settingsManager.settings) else { return }
+
         var alertIdentifier = identifier.rawValue
         var alertIdentifier = identifier.rawValue
         alertIdentifier = identifier == .pumpNotification ? alertIdentifier + content
         alertIdentifier = identifier == .pumpNotification ? alertIdentifier + content
             .title : (identifier == .alertMessageNotification ? alertIdentifier + content.body : alertIdentifier)
             .title : (identifier == .alertMessageNotification ? alertIdentifier + content.body : alertIdentifier)