Impressia/Vernissage/CoreData/ApplicationSettingsHandler....

52 lines
1.5 KiB
Swift
Raw Normal View History

2022-12-31 16:31:05 +01:00
//
// https://mczachurski.dev
// Copyright © 2022 Marcin Czachurski and the repository contributors.
// Licensed under the MIT License.
//
import Foundation
class ApplicationSettingsHandler {
2023-01-05 11:55:20 +01:00
public static let shared = ApplicationSettingsHandler()
private init() { }
2022-12-31 16:31:05 +01:00
func getDefaultSettings() -> ApplicationSettings {
var settingsList: [ApplicationSettings] = []
let context = CoreDataHandler.shared.container.viewContext
let fetchRequest = ApplicationSettings.fetchRequest()
do {
settingsList = try context.fetch(fetchRequest)
} catch {
print("Error during fetching application settings")
}
if let settings = settingsList.first {
return settings
} else {
let settings = self.createApplicationSettingsEntity()
CoreDataHandler.shared.save()
return settings
}
}
func setAccountAsDefault(accountData: AccountData) {
let defaultSettings = self.getDefaultSettings()
defaultSettings.currentAccount = accountData.id
CoreDataHandler.shared.save()
}
2022-12-31 16:31:05 +01:00
2023-01-12 18:34:48 +01:00
func setDefaultTintColor(tintColor: TintColor) {
let defaultSettings = self.getDefaultSettings()
defaultSettings.tintColor = Int32(tintColor.rawValue)
CoreDataHandler.shared.save()
}
2022-12-31 16:31:05 +01:00
private func createApplicationSettingsEntity() -> ApplicationSettings {
let context = CoreDataHandler.shared.container.viewContext
return ApplicationSettings(context: context)
}
}