fix saved time vs header time voting

only show onboarding once
This commit is contained in:
Trey t
2022-01-22 14:06:33 -06:00
parent 01e54d9373
commit dfe886a706
4 changed files with 16 additions and 8 deletions

View File

@@ -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()

View File

@@ -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")

View File

@@ -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
}

View File

@@ -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