refreshTokenIfNeeded method

Future<bool> refreshTokenIfNeeded()
inherited

Refreshes the authentication token if needed.

This method checks if the current token is expired and refreshes it if auto-refresh is enabled (KUMIHO_ENABLE_AUTO_REFRESH=true).

Returns true if a refresh occurred, false otherwise.

Implementation

Future<bool> refreshTokenIfNeeded() async {
  // Check if auto-refresh is enabled
  final autoRefresh = _envFlag(AuthEnvVars.enableAutoRefresh);
  if (!autoRefresh) return false;

  // Load current credentials
  _credentials ??= loadCredentials();
  if (_credentials == null) return false;

  // Check if refresh is needed
  if (_credentials!.isValid) return false;

  // Perform refresh
  final refreshed = await autoRefreshCredentials(_credentials!, forceRefresh: true);
  if (refreshed != null && refreshed != _credentials) {
    _credentials = refreshed;
    _token = _envFlag(AuthEnvVars.useControlPlaneToken)
        ? refreshed.controlPlaneToken ?? refreshed.idToken
        : refreshed.idToken;
    _tokenSource = 'auto-refreshed';
    return true;
  }

  return false;
}