// // UserDefaults+Settings.swift // AutoCatCore // // Created by Selim Mustafaev on 25.08.2024. // Copyright © 2024 Selim Mustafaev. All rights reserved. // import Foundation enum SettingsKey: String { case user case recognizeAlternativeOrder case recognizeShortenedNumbers case defaultRegion case recordBeep case showDebugInfo case useTestBackend } extension UserDefaults { func bool(for key: SettingsKey) -> Bool { bool(forKey: key.rawValue) } func string(for key: SettingsKey, defaultValue: String = "") -> String { string(forKey: key.rawValue) ?? defaultValue } func data(for key: SettingsKey) -> Data? { data(forKey: key.rawValue) } func set(value: T, for key: SettingsKey) { setValue(value, forKey: key.rawValue) } @objc dynamic var recognizeAlternativeOrder: Bool { get { bool(for: .recognizeAlternativeOrder) } set { set(value: newValue, for: .recognizeAlternativeOrder) } } @objc dynamic var recognizeShortenedNumbers: Bool { get { bool(for: .recognizeShortenedNumbers) } set { set(value: newValue, for: .recognizeShortenedNumbers) } } @objc dynamic var defaultRegion: String { get { string(for: .defaultRegion) } set { set(value: newValue, for: .defaultRegion) } } @objc dynamic var recordBeep: Bool { get { bool(for: .recordBeep) } set { set(value: newValue, for: .recordBeep) } } @objc dynamic var showDebugInfo: Bool { get { bool(for: .showDebugInfo) } set { set(value: newValue, for: .showDebugInfo) } } @objc dynamic var useTestBackend: Bool { get { bool(for: .useTestBackend) } set { set(value: newValue, for: .useTestBackend) } } @objc dynamic var user: Data? { get { data(for: .user) } set { set(value: newValue, for: .user) } } }