refreshYouTubeTokens method

Future<bool> refreshYouTubeTokens(
  1. String username
)

Refresh YouTube tokens (matching working implementation)

Implementation

Future<bool> refreshYouTubeTokens(String username) async {
  try {
    debugPrint('🔄 Refreshing YouTube tokens...');

    final GoogleSignIn? googleSignIn = _googleSignIn;
    if (googleSignIn == null) {
      debugPrint('❌ Google Sign-In not initialized');
      return false;
    }

    // Get current user
    final GoogleSignInAccount? currentUser = await googleSignIn.signInSilently();
    if (currentUser == null) {
      debugPrint('❌ No current Google user found');
      return false;
    }

    // Get fresh tokens
    final GoogleSignInAuthentication auth = await currentUser.authentication;

    // Send refreshed tokens to backend
    final response = await http.post(
      Uri.parse('$_apiBaseUrl/youtube/refresh-token'),
      headers: {
        'Content-Type': 'application/json',
      },
      body: json.encode({
        'accessToken': auth.accessToken,
        'idToken': auth.idToken,
        'refreshToken': currentUser.serverAuthCode,
        'userEmail': currentUser.email,
        'username': username,
        'tokenExpiry': DateTime.now().add(Duration(hours: 1)).toIso8601String(),
        'timestamp': DateTime.now().toIso8601String(),
      }),
    );

    if (response.statusCode == 200) {
      debugPrint('✅ YouTube tokens refreshed successfully');
      return true;
    } else {
      debugPrint('❌ Token refresh failed: ${response.statusCode}');
      return false;
    }

  } catch (e) {
    debugPrint('❌ Error refreshing YouTube tokens: $e');
    return false;
  }
}