AutoCat2/Shared/Models/Settings.swift
2021-07-07 00:48:05 +03:00

75 lines
2.4 KiB
Swift

import Foundation
public class Settings {
private var defaults: UserDefaults
public static let shared = Settings()
public var user: User {
didSet {
if let json = try? JSONEncoder().encode(self.user) {
self.defaults.set(json, forKey: "user")
self.defaults.synchronize()
}
}
}
public var recognizeAlternativeOrder: Bool = false {
didSet {
self.defaults.set(self.recognizeAlternativeOrder, forKey: "recognizeAlternativeOrder")
self.defaults.synchronize()
}
}
public var recognizeShortenedNumbers: Bool = false {
didSet {
self.defaults.set(self.recognizeShortenedNumbers, forKey: "recognizeShortenedNumbers")
self.defaults.synchronize()
}
}
public var defaultRegion: String = "" {
didSet {
self.defaults.set(self.defaultRegion, forKey: "defaultRegion")
self.defaults.synchronize()
}
}
public var recordBeep: Bool = false {
didSet {
self.defaults.set(self.recordBeep, forKey: "recordBeep")
self.defaults.synchronize()
}
}
public var showDebugInfo: Bool = false {
didSet {
self.defaults.set(self.showDebugInfo, forKey: "showDebugInfo")
self.defaults.synchronize()
}
}
public init(defaults: UserDefaults = .standard) {
self.defaults = defaults
self.defaults.register(defaults: [
"recognizeAlternativeOrder": false,
"recognizeShortenedNumbers": false,
"defaultRegion": "161",
"recordBeep": false,
"showDebugInfo": false
])
self.recognizeAlternativeOrder = self.defaults.bool(forKey: "recognizeAlternativeOrder")
self.recognizeShortenedNumbers = self.defaults.bool(forKey: "recognizeShortenedNumbers")
self.defaultRegion = self.defaults.string(forKey: "defaultRegion") ?? "161"
self.recordBeep = self.defaults.bool(forKey: "recordBeep")
self.showDebugInfo = self.defaults.bool(forKey: "showDebugInfo")
if let data = self.defaults.data(forKey: "user") {
self.user = (try? JSONDecoder().decode(User.self, from: data)) ?? User()
} else {
self.user = User()
}
}
}