getRefreshTokenAsync method

Future<String?> getRefreshTokenAsync()

Get refresh token asynchronously from secure storage

Implementation

Future<String?> getRefreshTokenAsync() async {
  // Try sync method first
  final syncToken = _getRefreshToken();
  if (syncToken != null && syncToken.isNotEmpty) {
    return syncToken;
  }

  // Fallback: read directly from secure storage
  try {
    const storage = FlutterSecureStorage(
      aOptions: AndroidOptions(encryptedSharedPreferences: true),
      iOptions: IOSOptions(accessibility: KeychainAccessibility.first_unlock),
    );
    final token = await storage.read(key: 'com.runanywhere.sdk.refreshToken');
    if (token != null && token.isNotEmpty) {
      // Update cache for next time
      _secureCache['com.runanywhere.sdk.refreshToken'] = token;
      return token;
    }
  } catch (e) {
    _logger.debug('Failed to read refresh token from secure storage: $e');
  }

  return null;
}