53 lines
1.4 KiB
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
|
|
}
|