AutoCat/AutoCatCore/Services/SettingsService/UserDefaults+Settings.swift

75 lines
1.9 KiB
Swift

//
// 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<T>(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) }
}
}