import SwiftUI extension RemoteControlConfig { final class StateModel: BaseStateModel { @Published var units: GlucoseUnits = .mgdL @Published var isTrioRemoteControlEnabled: Bool = false @Published var sharedSecret: String = "" override func subscribe() { units = settingsManager.settings.units isTrioRemoteControlEnabled = UserDefaults.standard.bool(forKey: "isTrioRemoteControlEnabled") sharedSecret = UserDefaults.standard.string(forKey: "trioRemoteControlSharedSecret") ?? generateInitialSharedSecret() $isTrioRemoteControlEnabled .receive(on: DispatchQueue.main) .sink { value in UserDefaults.standard.set(value, forKey: "isTrioRemoteControlEnabled") } .store(in: &lifetime) $sharedSecret .receive(on: DispatchQueue.main) .sink { value in UserDefaults.standard.set(value, forKey: "trioRemoteControlSharedSecret") } .store(in: &lifetime) } func generateNewSharedSecret() { let newSecret = UUID().uuidString.replacingOccurrences(of: "-", with: "") sharedSecret = newSecret UserDefaults.standard.set(newSecret, forKey: "trioRemoteControlSharedSecret") } private func generateInitialSharedSecret() -> String { let secret = UUID().uuidString.replacingOccurrences(of: "-", with: "") UserDefaults.standard.set(secret, forKey: "trioRemoteControlSharedSecret") return secret } } } extension RemoteControlConfig.StateModel: SettingsObserver { func settingsDidChange(_: FreeAPSSettings) { units = settingsManager.settings.units } }