polscm32 1 rok temu
rodzic
commit
96d0a098c9

+ 2 - 2
Trio.xcodeproj/project.pbxproj

@@ -1752,6 +1752,8 @@
 		3811DE1F25C9D48300A708ED /* View */ = {
 		3811DE1F25C9D48300A708ED /* View */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				BD47FD182D88AAF90043966B /* OnboardingView.swift */,
+				BD47FD162D88AAEF0043966B /* OnboardingStepViews.swift */,
 				3BAD36B12D7CDC1400CC298D /* MainLoadingView.swift */,
 				3BAD36B12D7CDC1400CC298D /* MainLoadingView.swift */,
 				3811DE2025C9D48300A708ED /* MainRootView.swift */,
 				3811DE2025C9D48300A708ED /* MainRootView.swift */,
 			);
 			);
@@ -2590,8 +2592,6 @@
 		BD47FD152D88AAD80043966B /* View */ = {
 		BD47FD152D88AAD80043966B /* View */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				BD47FD182D88AAF90043966B /* OnboardingView.swift */,
-				BD47FD162D88AAEF0043966B /* OnboardingStepViews.swift */,
 			);
 			);
 			path = View;
 			path = View;
 			sourceTree = "<group>";
 			sourceTree = "<group>";

+ 2 - 7
Trio/Sources/Application/TrioApp.swift

@@ -18,6 +18,8 @@ extension Notification.Name {
     @AppStorage("colorSchemePreference") private var colorSchemePreference: ColorSchemeOption = .systemDefault
     @AppStorage("colorSchemePreference") private var colorSchemePreference: ColorSchemeOption = .systemDefault
 
 
     let coreDataStack = CoreDataStack.shared
     let coreDataStack = CoreDataStack.shared
+    let onboardingManager = OnboardingManager.shared
+
     class InitState {
     class InitState {
         var complete = false
         var complete = false
         var error = false
         var error = false
@@ -33,9 +35,6 @@ extension Notification.Name {
     @State private var showLoadingView = true
     @State private var showLoadingView = true
     @State private var showLoadingError = false
     @State private var showLoadingError = false
 
 
-    // Onboarding manager to handle the onboarding flow
-    private let onboardingManager: OnboardingManager
-
     // Dependencies Assembler
     // Dependencies Assembler
     // contain all dependencies Assemblies
     // contain all dependencies Assemblies
     // TODO: Remove static key after update "Use Dependencies" logic
     // TODO: Remove static key after update "Use Dependencies" logic
@@ -71,7 +70,6 @@ extension Notification.Name {
         _ = resolver.resolve(ContactImageManager.self)!
         _ = resolver.resolve(ContactImageManager.self)!
         _ = resolver.resolve(HealthKitManager.self)!
         _ = resolver.resolve(HealthKitManager.self)!
         _ = resolver.resolve(WatchManager.self)!
         _ = resolver.resolve(WatchManager.self)!
-        _ = resolver.resolve(OnboardingManager.self)!
         _ = resolver.resolve(GarminManager.self)!
         _ = resolver.resolve(GarminManager.self)!
         _ = resolver.resolve(ContactImageManager.self)!
         _ = resolver.resolve(ContactImageManager.self)!
         _ = resolver.resolve(BluetoothStateManager.self)!
         _ = resolver.resolve(BluetoothStateManager.self)!
@@ -83,9 +81,6 @@ extension Notification.Name {
     }
     }
 
 
     init() {
     init() {
-        // Initialize onboardingManager in the initializer declaration
-        onboardingManager = OnboardingManager(resolver: TrioApp.assembler.resolver)
-
         let notificationCenter = Foundation.NotificationCenter.default
         let notificationCenter = Foundation.NotificationCenter.default
         notificationCenter.addObserver(
         notificationCenter.addObserver(
             forName: .initializationCompleted,
             forName: .initializationCompleted,

+ 0 - 1
Trio/Sources/Assemblies/ServiceAssembly.swift

@@ -23,7 +23,6 @@ final class ServiceAssembly: Assembly {
         container.register(GarminManager.self) { r in BaseGarminManager(resolver: r) }
         container.register(GarminManager.self) { r in BaseGarminManager(resolver: r) }
         container.register(ContactImageManager.self) { r in BaseContactImageManager(resolver: r) }
         container.register(ContactImageManager.self) { r in BaseContactImageManager(resolver: r) }
         container.register(AlertPermissionsChecker.self) { r in AlertPermissionsChecker(resolver: r) }
         container.register(AlertPermissionsChecker.self) { r in AlertPermissionsChecker(resolver: r) }
-        container.register(OnboardingManager.self) { r in OnboardingManager(resolver: r) }
         if #available(iOS 16.2, *) {
         if #available(iOS 16.2, *) {
             container.register(LiveActivityManager.self) { r in
             container.register(LiveActivityManager.self) { r in
                 LiveActivityManager(resolver: r)
                 LiveActivityManager(resolver: r)

+ 3 - 2
Trio/Sources/Modules/Onboarding/View/OnboardingStepViews.swift

@@ -138,8 +138,9 @@ struct GlucoseTargetStepView: View {
                                 get: { Double(truncating: onboardingData.targetHigh as NSNumber) },
                                 get: { Double(truncating: onboardingData.targetHigh as NSNumber) },
                                 set: { onboardingData.targetHigh = Decimal($0) }
                                 set: { onboardingData.targetHigh = Decimal($0) }
                             ),
                             ),
-                            in: onboardingData.units == .mgdL ? onboardingData
-                                .targetLow as! Double + 10 ... 200 : (onboardingData.targetLow as! Double) + 0.6 ... 11.1,
+                            in: onboardingData.units == .mgdL ? 
+                                Double(truncating: onboardingData.targetLow as NSNumber) + 10 ... 200 : 
+                                Double(truncating: onboardingData.targetLow as NSNumber) + 0.6 ... 11.1,
                             step: onboardingData.units == .mgdL ? 1 : 0.1
                             step: onboardingData.units == .mgdL ? 1 : 0.1
                         )
                         )
                         .accentColor(.green)
                         .accentColor(.green)

+ 2 - 2
Trio/Sources/Modules/Onboarding/View/OnboardingView.swift

@@ -2,7 +2,7 @@ import SwiftUI
 
 
 /// The main onboarding view that manages navigation between onboarding steps.
 /// The main onboarding view that manages navigation between onboarding steps.
 struct OnboardingView: View {
 struct OnboardingView: View {
-    @ObservedObject var manager: OnboardingManager
+    let manager: OnboardingManager
     @State private var onboardingData = OnboardingData()
     @State private var onboardingData = OnboardingData()
     @State private var currentStep: OnboardingStep = .welcome
     @State private var currentStep: OnboardingStep = .welcome
 
 
@@ -126,7 +126,7 @@ struct OnboardingView: View {
                             withAnimation {
                             withAnimation {
                                 if currentStep == .completed {
                                 if currentStep == .completed {
                                     // Apply settings and complete onboarding
                                     // Apply settings and complete onboarding
-                                    onboardingData.applyToSettings(settingsManager: manager.settingsManager)
+//                                    onboardingData.applyToSettings(settingsManager: manager.settingsManager)
                                     manager.completeOnboarding()
                                     manager.completeOnboarding()
                                 } else if let next = currentStep.next {
                                 } else if let next = currentStep.next {
                                     currentStep = next
                                     currentStep = next

+ 6 - 5
Trio/Sources/Services/OnboardingManager/OnboardingManager.swift

@@ -16,21 +16,22 @@ extension UserDefaults {
 
 
 /// Manages the app's onboarding experience, ensuring it's only shown to new users.
 /// Manages the app's onboarding experience, ensuring it's only shown to new users.
 /// Coordinates the display of onboarding screens when the app is launched for the first time.
 /// Coordinates the display of onboarding screens when the app is launched for the first time.
-final class OnboardingManager: Injectable, ObservableObject {
-    @Injected() var settingsManager: SettingsManager!
+final class OnboardingManager: ObservableObject {
+    /// Shared singleton instance.
+    static let shared = OnboardingManager()
 
 
     /// Indicates whether the onboarding flow should be presented.
     /// Indicates whether the onboarding flow should be presented.
     @Published var shouldShowOnboarding: Bool = false
     @Published var shouldShowOnboarding: Bool = false
 
 
     /// Initialize the OnboardingManager with the required dependencies.
     /// Initialize the OnboardingManager with the required dependencies.
-    init(resolver: Resolver) {
-        injectServices(resolver)
+    private init() {
         checkOnboardingStatus()
         checkOnboardingStatus()
     }
     }
 
 
     /// Checks if onboarding has been completed and updates the shouldShowOnboarding flag accordingly.
     /// Checks if onboarding has been completed and updates the shouldShowOnboarding flag accordingly.
     private func checkOnboardingStatus() {
     private func checkOnboardingStatus() {
-        shouldShowOnboarding = !UserDefaults.standard.onboardingCompleted
+//        shouldShowOnboarding = !UserDefaults.standard.onboardingCompleted
+        shouldShowOnboarding = true
     }
     }
 
 
     /// Marks onboarding as completed and updates the shouldShowOnboarding flag.
     /// Marks onboarding as completed and updates the shouldShowOnboarding flag.