From dfe886a70649b2151f5ba7cedf548ec8034a4ed3 Mon Sep 17 00:00:00 2001 From: Trey t Date: Sat, 22 Jan 2022 14:06:33 -0600 Subject: [PATCH] fix saved time vs header time voting only show onboarding once --- Shared/AppDelegate.swift | 2 +- Shared/Models/UserDefaultsStore.swift | 9 +++++++-- Shared/Onboarding/OnboardingData.swift | 9 ++++++--- Shared/views/ContentView.swift | 4 ++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Shared/AppDelegate.swift b/Shared/AppDelegate.swift index 195fe1e..00f44fb 100644 --- a/Shared/AppDelegate.swift +++ b/Shared/AppDelegate.swift @@ -13,7 +13,7 @@ import SwiftUI // AppDelegate.swift class AppDelegate: NSObject, UIApplicationDelegate { - @AppStorage("savedOnboardingData") private var savedOnboardingData = OnboardingData() + private let savedOnboardingData = UserDefaultsStore.getOnboarding() func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { // PersistenceController.shared.clearDB() diff --git a/Shared/Models/UserDefaultsStore.swift b/Shared/Models/UserDefaultsStore.swift index 0806c55..6c54f68 100644 --- a/Shared/Models/UserDefaultsStore.swift +++ b/Shared/Models/UserDefaultsStore.swift @@ -8,8 +8,13 @@ import Foundation class UserDefaultsStore { + enum Keys: String { + case savedOnboardingData + case needsOnboarding + } + static func getOnboarding() -> OnboardingData { - if let data = UserDefaults.standard.object(forKey: "savedOnboardingData") as? Data, + if let data = UserDefaults.standard.object(forKey: UserDefaultsStore.Keys.savedOnboardingData.rawValue) as? Data, let model = try? JSONDecoder().decode(OnboardingData.self, from: data) { return model } else { @@ -20,7 +25,7 @@ class UserDefaultsStore { static func saveOnboarding(onboardingData: OnboardingData) -> OnboardingData { do { let data = try JSONEncoder().encode(onboardingData) - UserDefaults.standard.set(data, forKey: "savedOnboardingData") + UserDefaults.standard.set(data, forKey: UserDefaultsStore.Keys.savedOnboardingData.rawValue) return UserDefaultsStore.getOnboarding() } catch { fatalError("error saving") diff --git a/Shared/Onboarding/OnboardingData.swift b/Shared/Onboarding/OnboardingData.swift index 7496700..6e3074d 100644 --- a/Shared/Onboarding/OnboardingData.swift +++ b/Shared/Onboarding/OnboardingData.swift @@ -42,13 +42,16 @@ final class OnboardingData: NSObject, ObservableObject, Codable { let currentMin = currentDateComp.minute, let savedHour = savedDateComp.hour, let savedMin = savedDateComp.minute { - if currentHour >= savedHour && - currentMin >= savedMin { + + if currentHour > savedHour { return true } + + if currentHour == savedHour { + return currentMin >= savedMin + } } - return false } diff --git a/Shared/views/ContentView.swift b/Shared/views/ContentView.swift index 8907eea..35289b5 100644 --- a/Shared/views/ContentView.swift +++ b/Shared/views/ContentView.swift @@ -11,8 +11,8 @@ import Charts struct ContentView: View { @Environment(\.managedObjectContext) private var viewContext - @State private var needsOnboarding: Bool = true - + @AppStorage(UserDefaultsStore.Keys.needsOnboarding.rawValue) private var needsOnboarding = true + @State private var showingSheet = false @State private var showTodayInput = true