refreshYouTubeTokens method

Future<bool> refreshYouTubeTokens()

Refresh YouTube tokens

Implementation

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

    final googleSignIn = _initializeGoogleSignIn();
    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;

    // Get stored auth token
    final authToken = await getFromSecure('onairos_jwt_token') ??
        await getFromSecure('onairos_user_token') ??
        await getFromSecure('auth_token');

    if (authToken == null) {
      debugPrint('❌ No auth token found for YouTube refresh');
      return false;
    }

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

    if (refreshResponse.statusCode == 200) {
      final responseData = jsonDecode(refreshResponse.body);
      debugPrint('✅ YouTube tokens refreshed successfully: $responseData');
      return true;
    } else {
      final errorData = refreshResponse.body;
      debugPrint('❌ YouTube token refresh failed: ${refreshResponse.statusCode} $errorData');
      return false;
    }
  } catch (error) {
    debugPrint('❌ Error refreshing YouTube tokens: $error');
    return false;
  }
}