import Foundation protocol TokenStore: AnyObject { var jwt: String? { get set } func clear() } final class DefaultTokenStore: TokenStore { private let key = "auth_jwt" private let serviceName = "com.br.pedifoods.app.auth" private let defaults = UserDefaults.standard var jwt: String? { get { #if os(iOS) if let keychainValue = KeychainStore.load(service: serviceName, key: key) { return keychainValue } #endif return defaults.string(forKey: key) } set { #if os(iOS) if let newValue { KeychainStore.save(newValue, service: serviceName, key: key) } else { KeychainStore.delete(service: serviceName, key: key) } #endif defaults.set(newValue, forKey: key) } } func clear() { #if os(iOS) KeychainStore.delete(service: serviceName, key: key) #endif defaults.removeObject(forKey: key) } }