diff --git a/readeck/Data/TokenProvider.swift b/readeck/Data/TokenProvider.swift index 9881db6..714e195 100644 --- a/readeck/Data/TokenProvider.swift +++ b/readeck/Data/TokenProvider.swift @@ -10,19 +10,38 @@ protocol TokenProvider { class KeychainTokenProvider: TokenProvider { private let keychainHelper = KeychainHelper.shared + // Cache to avoid repeated keychain access + private var cachedToken: String? + private var cachedEndpoint: String? + func getToken() async -> String? { - return keychainHelper.loadToken() + if let cached = cachedToken { + return cached + } + + let token = keychainHelper.loadToken() + cachedToken = token + return token } func getEndpoint() async -> String? { - return keychainHelper.loadEndpoint() + if let cached = cachedEndpoint { + return cached + } + + let endpoint = keychainHelper.loadEndpoint() + cachedEndpoint = endpoint + return endpoint } func setToken(_ token: String) async { keychainHelper.saveToken(token) + cachedToken = token } func clearToken() async { keychainHelper.clearCredentials() + cachedToken = nil + cachedEndpoint = nil } }