
import { showAuthToast } from '@/utils/auth';
import { getProxyType, isCorsProxyEnabled } from '@/lib/supabase/config';

/**
 * 회원가입 API 호출 중 발생한 예외 처리
 */
export const handleSignUpApiError = (error: any) => {
  console.error('회원가입 API 호출 중 예외 발생:', error);
  
  // 프록시 설정 확인
  const usingProxy = isCorsProxyEnabled();
  const proxyType = getProxyType();
  
  // 오류 메시지 설정 및 프록시 추천
  let errorMessage = error.message || '알 수 없는 오류가 발생했습니다.';
  
  // 타임아웃 오류 감지
  if (errorMessage.includes('timed out') || errorMessage.includes('timeout')) {
    errorMessage = '서버 응답 시간이 초과되었습니다. 네트워크 상태를 확인하고 다시 시도하세요.';
  }
  // CORS 또는 네트워크 오류 감지
  else if (errorMessage.includes('Failed to fetch') || 
      errorMessage.includes('NetworkError') || 
      errorMessage.includes('CORS')) {
    if (!usingProxy) {
      errorMessage += ' (설정에서 Cloudflare CORS 프록시 활성화를 권장합니다)';
    } else if (proxyType !== 'cloudflare') {
      errorMessage += ' (설정에서 Cloudflare CORS 프록시로 변경을 권장합니다)';
    }
  }
  
  showAuthToast('회원가입 오류', errorMessage, 'destructive');
  
  return { error: { message: errorMessage }, user: null };
};

/**
 * 응답 데이터에서 특정 에러 처리
 */
export const handleResponseError = (responseData: any) => {
  if (responseData && responseData.error) {
    const errorMessage = responseData.error_description || responseData.error || '회원가입 실패';
    
    if (responseData.error === 'user_already_registered') {
      showAuthToast('회원가입 실패', '이미 등록된 이메일 주소입니다.', 'destructive');
      return { error: { message: '이미 등록된 이메일 주소입니다.' }, user: null };
    }
    
    showAuthToast('회원가입 실패', errorMessage, 'destructive');
    return { error: { message: errorMessage }, user: null };
  }
  return null;
};
