From a0e645886e73452058a50b1ea3bb27c1996cef07 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sat, 30 May 2026 17:25:31 +0200 Subject: [PATCH] Tesla: catch and clear invalid refresh tokens --- .../availability/TeslaOwnerAvailabilityDetector.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/net/vonforst/evmap/api/availability/TeslaOwnerAvailabilityDetector.kt b/app/src/main/java/net/vonforst/evmap/api/availability/TeslaOwnerAvailabilityDetector.kt index 7af87227..485d5c87 100644 --- a/app/src/main/java/net/vonforst/evmap/api/availability/TeslaOwnerAvailabilityDetector.kt +++ b/app/src/main/java/net/vonforst/evmap/api/availability/TeslaOwnerAvailabilityDetector.kt @@ -7,6 +7,7 @@ import net.vonforst.evmap.api.availability.tesla.asTeslaCoord import net.vonforst.evmap.model.ChargeLocation import net.vonforst.evmap.model.Chargepoint import okhttp3.OkHttpClient +import retrofit2.HttpException import java.time.Instant import java.util.Collections @@ -229,12 +230,21 @@ class TeslaOwnerAvailabilityDetector( ?: run { val refreshToken = tokenStore.teslaRefreshToken ?: throw NotSignedInException() - val response = + val response = try { authApi.getToken( TeslaAuthenticationApi.RefreshTokenRequest( refreshToken ) ) + } catch (e: HttpException) { + if (e.code() == 401) { + // refresh token is invalid, clear it + tokenStore.teslaRefreshToken = null + throw NotSignedInException() + } else { + throw e + } + } tokenStore.teslaAccessToken = response.accessToken tokenStore.teslaAccessTokenExpiry = now + response.expiresIn response.accessToken