From 0109aee8f8ed1552f0847a0b220c3eea8bf5bee0 Mon Sep 17 00:00:00 2001 From: Trey t Date: Fri, 28 Jan 2022 10:27:33 -0600 Subject: [PATCH] switch db between debug and release on widgets if its before the voting time show yesterdays vote, if after either show no vote or current vote user shared user defaults --- FeelsWidget/FeelsWidget.swift | 17 +++++++++++------ Shared/Models/UserDefaultsStore.swift | 4 ++-- Shared/Persistence.swift | 7 +++++-- Shared/Random.swift | 10 ++++++++++ Shared/views/ContentView.swift | 2 +- Shared/views/SettingsView.swift | 2 +- 6 files changed, 30 insertions(+), 12 deletions(-) diff --git a/FeelsWidget/FeelsWidget.swift b/FeelsWidget/FeelsWidget.swift index 78ee949..4b4be99 100644 --- a/FeelsWidget/FeelsWidget.swift +++ b/FeelsWidget/FeelsWidget.swift @@ -28,8 +28,13 @@ class WatchTimelineView: Identifiable { struct TimeLineCreator { static func createViews(daysBack: Int) -> [WatchTimelineView] { var timeLineView = [WatchTimelineView]() + var startDayOffset = 0 - for day in 0.. SimpleEntry { return SimpleEntry(date: Date(), configuration: ConfigurationIntent(), - timeLineViews: TimeLineCreator.createViews(daysBack: 10)) + timeLineViews: Array(TimeLineCreator.createViews(daysBack: 11).prefix(10))) } func getSnapshot(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (SimpleEntry) -> ()) { let entry = SimpleEntry(date: Date(), configuration: ConfigurationIntent(), - timeLineViews: TimeLineCreator.createViews(daysBack: 10)) + timeLineViews: Array(TimeLineCreator.createViews(daysBack: 11).prefix(10))) completion(entry) } @@ -137,7 +142,7 @@ struct SmallWidgetView: View { init(entry: Provider.Entry) { self.entry = entry - timeLineView = TimeLineCreator.createViews(daysBack: 1) + timeLineView = [TimeLineCreator.createViews(daysBack: 2).first!] } var body: some View { @@ -162,7 +167,7 @@ struct MediumWidgetView: View { init(entry: Provider.Entry) { self.entry = entry - timeLineView = TimeLineCreator.createViews(daysBack: 5) + timeLineView = Array(TimeLineCreator.createViews(daysBack: 6).prefix(5)) } var body: some View { @@ -205,7 +210,7 @@ struct SmallGraphicWidgetView: View { init(entry: Provider.Entry) { self.entry = entry - timeLineView = TimeLineCreator.createViews(daysBack: 1) + timeLineView = [TimeLineCreator.createViews(daysBack: 2).first!] } var body: some View { diff --git a/Shared/Models/UserDefaultsStore.swift b/Shared/Models/UserDefaultsStore.swift index c3f20e8..66ffdc6 100644 --- a/Shared/Models/UserDefaultsStore.swift +++ b/Shared/Models/UserDefaultsStore.swift @@ -15,7 +15,7 @@ class UserDefaultsStore { } static func getOnboarding() -> OnboardingData { - if let data = UserDefaults.standard.object(forKey: UserDefaultsStore.Keys.savedOnboardingData.rawValue) as? Data, + if let data = GroupUserDefaults.groupDefaults.object(forKey: UserDefaultsStore.Keys.savedOnboardingData.rawValue) as? Data, let model = try? JSONDecoder().decode(OnboardingData.self, from: data) { return model } else { @@ -26,7 +26,7 @@ class UserDefaultsStore { static func saveOnboarding(onboardingData: OnboardingData) -> OnboardingData { do { let data = try JSONEncoder().encode(onboardingData) - UserDefaults.standard.set(data, forKey: UserDefaultsStore.Keys.savedOnboardingData.rawValue) + GroupUserDefaults.groupDefaults.set(data, forKey: UserDefaultsStore.Keys.savedOnboardingData.rawValue) return UserDefaultsStore.getOnboarding() } catch { fatalError("error saving") diff --git a/Shared/Persistence.swift b/Shared/Persistence.swift index 7471bb8..d98f9b8 100644 --- a/Shared/Persistence.swift +++ b/Shared/Persistence.swift @@ -9,7 +9,7 @@ import CoreData import SwiftUI class PersistenceController { - @AppStorage(UserDefaultsStore.Keys.useCloudKit.rawValue) private var useCloudKit = false + @AppStorage(UserDefaultsStore.Keys.useCloudKit.rawValue, store: GroupUserDefaults.groupDefaults) private var useCloudKit = false static let shared = PersistenceController.persistenceController @@ -278,8 +278,11 @@ extension NSManagedObjectContext { class NSCustomPersistentContainer: NSPersistentContainer { override open class func defaultDirectoryURL() -> URL { - var storeURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.88oak.ifeel") + var storeURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.groupShareId) storeURL = storeURL?.appendingPathComponent("Feels.sqlite") +#if DEBUG + storeURL = storeURL?.appendingPathComponent("Feels-Debug.sqlite") +#endif return storeURL! } } diff --git a/Shared/Random.swift b/Shared/Random.swift index 45f39fe..5d3f3a7 100644 --- a/Shared/Random.swift +++ b/Shared/Random.swift @@ -7,6 +7,16 @@ import Foundation +struct Constants { + static let groupShareId = "group.com.88oak.ifeel" +} + +struct GroupUserDefaults { + static var groupDefaults: UserDefaults { + return UserDefaults(suiteName: Constants.groupShareId)! + } +} + class Random { static var tomorrowMidnightThirty: Date { let components = DateComponents(hour: 0, minute: 30, second: 0) diff --git a/Shared/views/ContentView.swift b/Shared/views/ContentView.swift index 7d69099..4899aae 100644 --- a/Shared/views/ContentView.swift +++ b/Shared/views/ContentView.swift @@ -11,7 +11,7 @@ import Charts struct ContentView: View { @Environment(\.managedObjectContext) private var viewContext - @AppStorage(UserDefaultsStore.Keys.needsOnboarding.rawValue) private var needsOnboarding = true + @AppStorage(UserDefaultsStore.Keys.needsOnboarding.rawValue, store: GroupUserDefaults.groupDefaults) private var needsOnboarding = true @State private var showingSheet = false @State private var showTodayInput = true diff --git a/Shared/views/SettingsView.swift b/Shared/views/SettingsView.swift index d92a673..73c1ff8 100644 --- a/Shared/views/SettingsView.swift +++ b/Shared/views/SettingsView.swift @@ -20,7 +20,7 @@ struct SettingsView: View { @State private var showWhyBGMode = false @ObservedObject var syncMonitor = SyncMonitor.shared - @AppStorage(UserDefaultsStore.Keys.useCloudKit.rawValue) private var useCloudKit = false + @AppStorage(UserDefaultsStore.Keys.useCloudKit.rawValue, store: GroupUserDefaults.groupDefaults) private var useCloudKit = false var body: some View { ZStack {