AutoCat/AutoCatCore/Services/SettingsService/SettingsService.swift

53 lines
1.4 KiB
Swift

//
// SettingsService.swift
// AutoCatCore
//
// Created by Selim Mustafaev on 17.08.2024.
// Copyright © 2024 Selim Mustafaev. All rights reserved.
//
import Foundation
import ObservableDefaults
@ObservableDefaults
public final class SettingsService: SettingsServiceProtocol {
@Ignore let jsonEncoder = JSONEncoder()
@Ignore let jsonDecoder = JSONDecoder()
@ObservableOnly
public var user: User {
get {
if userData.count > 0 {
let result = try? jsonDecoder.decode(User.self, from: userData)
return result ?? User()
} else {
return User()
}
}
set {
if let json = try? jsonEncoder.encode(newValue) {
userData = json
}
}
}
@DefaultsKey(userDefaultsKey: "user")
public var userData: Data = .init()
public var recognizeAlternativeOrder: Bool = false
public var recognizeShortenedNumbers: Bool = false
public var defaultRegion: String = "161"
public var recordBeep: Bool = false
public var showDebugInfo: Bool = false
@ObservableOnly
public var backend: Constants.Backend {
get { Constants.Backend(rawValue: backendString) ?? .de }
set { backendString = newValue.rawValue }
}
public var backendString: String = Constants.Backend.de.rawValue
}