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
This commit is contained in:
Trey t
2022-01-28 10:27:33 -06:00
parent a45c2f0639
commit 0109aee8f8
6 changed files with 30 additions and 12 deletions

View File

@@ -28,8 +28,13 @@ class WatchTimelineView: Identifiable {
struct TimeLineCreator { struct TimeLineCreator {
static func createViews(daysBack: Int) -> [WatchTimelineView] { static func createViews(daysBack: Int) -> [WatchTimelineView] {
var timeLineView = [WatchTimelineView]() var timeLineView = [WatchTimelineView]()
var startDayOffset = 0
for day in 0..<daysBack{ if !UserDefaultsStore.getOnboarding().ableToVoteBasedOnCurentTime() {
startDayOffset = 1
}
for day in startDayOffset..<daysBack{
let day = Calendar.current.date(byAdding: .day, value: -day, to: Date())! let day = Calendar.current.date(byAdding: .day, value: -day, to: Date())!
let dayStart = Calendar.current.startOfDay(for: day) let dayStart = Calendar.current.startOfDay(for: day)
@@ -62,13 +67,13 @@ struct Provider: IntentTimelineProvider {
func placeholder(in context: Context) -> SimpleEntry { func placeholder(in context: Context) -> SimpleEntry {
return SimpleEntry(date: Date(), return SimpleEntry(date: Date(),
configuration: ConfigurationIntent(), 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) -> ()) { func getSnapshot(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (SimpleEntry) -> ()) {
let entry = SimpleEntry(date: Date(), let entry = SimpleEntry(date: Date(),
configuration: ConfigurationIntent(), configuration: ConfigurationIntent(),
timeLineViews: TimeLineCreator.createViews(daysBack: 10)) timeLineViews: Array(TimeLineCreator.createViews(daysBack: 11).prefix(10)))
completion(entry) completion(entry)
} }
@@ -137,7 +142,7 @@ struct SmallWidgetView: View {
init(entry: Provider.Entry) { init(entry: Provider.Entry) {
self.entry = entry self.entry = entry
timeLineView = TimeLineCreator.createViews(daysBack: 1) timeLineView = [TimeLineCreator.createViews(daysBack: 2).first!]
} }
var body: some View { var body: some View {
@@ -162,7 +167,7 @@ struct MediumWidgetView: View {
init(entry: Provider.Entry) { init(entry: Provider.Entry) {
self.entry = entry self.entry = entry
timeLineView = TimeLineCreator.createViews(daysBack: 5) timeLineView = Array(TimeLineCreator.createViews(daysBack: 6).prefix(5))
} }
var body: some View { var body: some View {
@@ -205,7 +210,7 @@ struct SmallGraphicWidgetView: View {
init(entry: Provider.Entry) { init(entry: Provider.Entry) {
self.entry = entry self.entry = entry
timeLineView = TimeLineCreator.createViews(daysBack: 1) timeLineView = [TimeLineCreator.createViews(daysBack: 2).first!]
} }
var body: some View { var body: some View {

View File

@@ -15,7 +15,7 @@ class UserDefaultsStore {
} }
static func getOnboarding() -> OnboardingData { 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) { let model = try? JSONDecoder().decode(OnboardingData.self, from: data) {
return model return model
} else { } else {
@@ -26,7 +26,7 @@ class UserDefaultsStore {
static func saveOnboarding(onboardingData: OnboardingData) -> OnboardingData { static func saveOnboarding(onboardingData: OnboardingData) -> OnboardingData {
do { do {
let data = try JSONEncoder().encode(onboardingData) 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() return UserDefaultsStore.getOnboarding()
} catch { } catch {
fatalError("error saving") fatalError("error saving")

View File

@@ -9,7 +9,7 @@ import CoreData
import SwiftUI import SwiftUI
class PersistenceController { 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 static let shared = PersistenceController.persistenceController
@@ -278,8 +278,11 @@ extension NSManagedObjectContext {
class NSCustomPersistentContainer: NSPersistentContainer { class NSCustomPersistentContainer: NSPersistentContainer {
override open class func defaultDirectoryURL() -> URL { 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") storeURL = storeURL?.appendingPathComponent("Feels.sqlite")
#if DEBUG
storeURL = storeURL?.appendingPathComponent("Feels-Debug.sqlite")
#endif
return storeURL! return storeURL!
} }
} }

View File

@@ -7,6 +7,16 @@
import Foundation import Foundation
struct Constants {
static let groupShareId = "group.com.88oak.ifeel"
}
struct GroupUserDefaults {
static var groupDefaults: UserDefaults {
return UserDefaults(suiteName: Constants.groupShareId)!
}
}
class Random { class Random {
static var tomorrowMidnightThirty: Date { static var tomorrowMidnightThirty: Date {
let components = DateComponents(hour: 0, minute: 30, second: 0) let components = DateComponents(hour: 0, minute: 30, second: 0)

View File

@@ -11,7 +11,7 @@ import Charts
struct ContentView: View { struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext @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 showingSheet = false
@State private var showTodayInput = true @State private var showTodayInput = true

View File

@@ -20,7 +20,7 @@ struct SettingsView: View {
@State private var showWhyBGMode = false @State private var showWhyBGMode = false
@ObservedObject var syncMonitor = SyncMonitor.shared @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 { var body: some View {
ZStack { ZStack {