75 lines
1.9 KiB
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) }
|
|
}
|
|
}
|