// // 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 }