getValidToken method
Get valid access token, refreshing if needed
Implementation
Future<String?> getValidToken() async {
// Check if we have a cached token first
final cachedToken = _secureCache['com.runanywhere.sdk.accessToken'];
if (!isAuthenticated() && cachedToken == null) {
return null;
}
if (needsRefresh()) {
_logger.debug('Token needs refresh');
final result = await refreshToken();
if (!result.isSuccess) {
_logger.warning('Token refresh failed', metadata: {'error': result.error});
// Return cached token anyway, server will reject if invalid
return cachedToken ?? getAccessToken();
}
// Return new token from refresh result
return result.data?.accessToken ?? getAccessToken() ?? cachedToken;
}
return getAccessToken() ?? cachedToken;
}