Browse Source

Conditional placement for treatment data hint for returning users

Deniz Cengiz 1 year ago
parent
commit
e2b1d32798

+ 11 - 5
Trio/Sources/Application/TrioApp.swift

@@ -22,9 +22,10 @@ extension Notification.Name {
     let onboardingManager = OnboardingManager.shared
 
     class InitState {
-        var complete = false
-        var error = false
+        var complete: Bool = false
+        var error: Bool = false
         var migrationErrors: [String] = []
+        var migrationFailed: Bool = false
     }
 
     // We use both InitState and @State variables to track coreDataStack
@@ -207,6 +208,7 @@ extension Notification.Name {
         }
 
         initState.migrationErrors = importErrors
+        initState.migrationFailed = importErrors.isNotEmpty
     }
 
     /// Clears any legacy (Trio 0.2.x) delivered and pending notifications related to non-looping alerts.
@@ -299,9 +301,13 @@ extension Notification.Name {
                     }
                 } else if onboardingManager.shouldShowOnboarding {
                     // Show onboarding if needed
-                    Onboarding.RootView(resolver: resolver, onboardingManager: onboardingManager)
-                        .preferredColorScheme(colorScheme(for: .dark) ?? nil)
-                        .transition(.opacity)
+                    Onboarding.RootView(
+                        resolver: resolver,
+                        onboardingManager: onboardingManager,
+                        wasMigrationSuccessful: !initState.migrationFailed
+                    )
+                    .preferredColorScheme(colorScheme(for: .dark) ?? nil)
+                    .transition(.opacity)
                 } else {
                     Main.RootView(resolver: resolver)
                         .preferredColorScheme(colorScheme(for: colorSchemePreference) ?? nil)

+ 3 - 0
Trio/Sources/Localizations/Main/Localizable.xcstrings

@@ -239840,6 +239840,9 @@
     "Your last 24 hr of treatment data (pump events, carb entries, glucose trace, etc.) are migrated." : {
 
     },
+    "Your last 24 hr of treatment data (pump events, carb entries, glucose trace, etc.) are not migrated." : {
+
+    },
     "Your phone or app is not enabled for NFC communications, which is needed to pair to libre2 sensors" : {
       "extractionState" : "manual",
       "localizations" : {

+ 5 - 2
Trio/Sources/Modules/Onboarding/View/OnboardingRootView.swift

@@ -8,6 +8,7 @@ extension Onboarding {
         @State var state = StateModel()
         @State private var navigationDirection: OnboardingNavigationDirection = .forward
         let onboardingManager: OnboardingManager
+        let wasMigrationSuccessful: Bool
 
         // Step management
         @State private var currentChapter: OnboardingChapter = .prepareTrio
@@ -124,6 +125,7 @@ extension Onboarding {
                         }
 
                         OnboardingStepContent(
+                            wasMigrationSuccessful: wasMigrationSuccessful,
                             currentStep: $currentStep,
                             showingChapterCompletion: $showingChapterCompletion,
                             currentStartupSubstep: $currentStartupSubstep,
@@ -280,6 +282,7 @@ struct OnboardingProgressBar: View {
 }
 
 struct OnboardingStepContent: View {
+    var wasMigrationSuccessful: Bool
     @Binding var currentStep: OnboardingStep
     @Binding var showingChapterCompletion: OnboardingChapter?
     @Binding var currentStartupSubstep: StartupSubstep
@@ -314,7 +317,7 @@ struct OnboardingStepContent: View {
                                 case .startupGuide:
                                     StartupGuideStepView(state: state)
                                 case .returningUser:
-                                    StartupReturningUserStepView(state: state)
+                                    StartupReturningUserStepView(state: state, wasMigrationSuccessful: wasMigrationSuccessful)
                                 case .forceCloseWarning:
                                     StartupForceCloseWarningStepView(state: state)
                                 }
@@ -760,7 +763,7 @@ struct Onboarding_Preview: PreviewProvider {
         Group {
             let resolver = TrioApp.resolver
             let onboardingManager = OnboardingManager()
-            Onboarding.RootView(resolver: resolver, onboardingManager: onboardingManager)
+            Onboarding.RootView(resolver: resolver, onboardingManager: onboardingManager, wasMigrationSuccessful: true)
                 .previewDisplayName("Onboarding Flow")
         }
     }

+ 11 - 1
Trio/Sources/Modules/Onboarding/View/OnboardingSteps/StartupGuide/StartupReturningUserStepView.swift

@@ -8,6 +8,7 @@ import SwiftUI
 
 struct StartupReturningUserStepView: View {
     @Bindable var state: Onboarding.StateModel
+    let wasMigrationSuccessful: Bool
 
     @Environment(\.openURL) var openURL
 
@@ -25,7 +26,9 @@ struct StartupReturningUserStepView: View {
                     Text("Important").foregroundStyle(Color.orange)
                 }.bold()
 
-                Text("Your last 24 hr of treatment data (pump events, carb entries, glucose trace, etc.) are migrated.")
+                if !wasMigrationSuccessful {
+                    Text("Your last 24 hr of treatment data (pump events, carb entries, glucose trace, etc.) are not migrated.")
+                }
 
                 Divider().overlay(Color.orange)
 
@@ -63,6 +66,13 @@ struct StartupReturningUserStepView: View {
                     .font(.headline)
                     .padding(.bottom, 4)
 
+                if wasMigrationSuccessful {
+                    BulletPoint(
+                        String(
+                            localized: "Your last 24 hr of treatment data (pump events, carb entries, glucose trace, etc.) are migrated."
+                        )
+                    )
+                }
                 BulletPoint(String(localized: "Your pump and CGM configurations are retained and fully functional."))
                 BulletPoint(
                     String(