106 lines
3.6 KiB
Swift
106 lines
3.6 KiB
Swift
//
|
|
// UserDefaultsStore.swift
|
|
// Feels (iOS)
|
|
//
|
|
// Created by Trey Tartt on 1/22/22.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class UserDefaultsStore {
|
|
enum Keys: String {
|
|
case savedOnboardingData
|
|
case needsOnboarding
|
|
case useCloudKit
|
|
case deleteEnable
|
|
case mainViewTopHeaderIndex
|
|
case theme
|
|
case moodImages
|
|
case moodTint
|
|
case personalityPack
|
|
case customWidget
|
|
|
|
case contentViewCurrentSelectedHeaderViewBackDays
|
|
case contentViewHeaderTag
|
|
case contentViewHeaderTagViewOneViewType
|
|
case contentViewHeaderTagViewTwoViewType
|
|
case currentSelectedHeaderViewViewType
|
|
}
|
|
|
|
static func getOnboarding() -> OnboardingData {
|
|
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 {
|
|
return OnboardingData()
|
|
}
|
|
}
|
|
|
|
static func saveOnboarding(onboardingData: OnboardingData) -> OnboardingData {
|
|
do {
|
|
let data = try JSONEncoder().encode(onboardingData)
|
|
GroupUserDefaults.groupDefaults.set(data, forKey: UserDefaultsStore.Keys.savedOnboardingData.rawValue)
|
|
return UserDefaultsStore.getOnboarding()
|
|
} catch {
|
|
fatalError("error saving")
|
|
}
|
|
}
|
|
|
|
static func moodMoodImagable() -> MoodImagable.Type {
|
|
if let data = GroupUserDefaults.groupDefaults.object(forKey: UserDefaultsStore.Keys.moodImages.rawValue) as? Int,
|
|
let model = MoodImages.init(rawValue: data) {
|
|
return model.moodImages
|
|
} else {
|
|
return MoodImages.FontAwesome.moodImages
|
|
}
|
|
}
|
|
|
|
static func moodTintable() -> MoodTintable.Type {
|
|
if let data = GroupUserDefaults.groupDefaults.object(forKey: UserDefaultsStore.Keys.moodTint.rawValue) as? Int,
|
|
let model = MoodTints.init(rawValue: data) {
|
|
return model.moodTints
|
|
} else {
|
|
return MoodTints.Default.moodTints
|
|
}
|
|
}
|
|
|
|
static func personalityPackable() -> PersonalityPack {
|
|
if let data = GroupUserDefaults.groupDefaults.object(forKey: UserDefaultsStore.Keys.personalityPack.rawValue) as? Int,
|
|
let model = PersonalityPack.init(rawValue: data) {
|
|
return model
|
|
} else {
|
|
return PersonalityPack.Default
|
|
}
|
|
}
|
|
|
|
static func theme() -> Theme {
|
|
if let data = GroupUserDefaults.groupDefaults.object(forKey: UserDefaultsStore.Keys.theme.rawValue) as? Int,
|
|
let model = Theme.init(rawValue: data) {
|
|
return model
|
|
} else {
|
|
return Theme.system
|
|
}
|
|
}
|
|
|
|
static func getCustomWidget() -> CustomWidgetModel {
|
|
if let data = GroupUserDefaults.groupDefaults.object(forKey: UserDefaultsStore.Keys.customWidget.rawValue) as? Data,
|
|
let model = try? JSONDecoder().decode(CustomWidgetModel.self, from: data) {
|
|
return model
|
|
} else {
|
|
return CustomWidgetModel.defaultCustomWidget
|
|
}
|
|
}
|
|
|
|
@discardableResult
|
|
static func saveCustomWidget(widgetModel: CustomWidgetModel) -> CustomWidgetModel {
|
|
do {
|
|
let data = try JSONEncoder().encode(widgetModel)
|
|
GroupUserDefaults.groupDefaults.set(data, forKey: UserDefaultsStore.Keys.customWidget.rawValue)
|
|
return UserDefaultsStore.getCustomWidget()
|
|
} catch {
|
|
fatalError("error saving")
|
|
}
|
|
}
|
|
}
|
|
|