import {
  AUTH_ERROR_CODE_MESSAGES,
  AUTH_ERROR_MESSAGES,
  AUTH_ERROR_STATUS_MESSAGES,
} from "./constants";

export type AuthApiErrorLike = {
  message?: string | null;
  code?: string | null;
  status?: number | null;
};

/**
 * Supabase Auth 에러 데이터를 인간이 읽을 수 있는 한글 메시지로 변환합니다.
 */
export function getAuthErrorMessage(error: AuthApiErrorLike): string {
  if (error.code && error.code in AUTH_ERROR_CODE_MESSAGES) {
    return AUTH_ERROR_CODE_MESSAGES[
      error.code as keyof typeof AUTH_ERROR_CODE_MESSAGES
    ];
  }

  if (error.status && error.status in AUTH_ERROR_STATUS_MESSAGES) {
    return AUTH_ERROR_STATUS_MESSAGES[
      error.status as keyof typeof AUTH_ERROR_STATUS_MESSAGES
    ];
  }

  return AUTH_ERROR_MESSAGES.DEFAULT;
}
