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:
@@ -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 {
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user