import type { AppLocale } from "../locale";
import { DEFAULT_LOCALE } from "../locale";

export type SubmissionsMessages = {
  headerTitle: string;
  headerDescription: string;
  errorUnauthorized: string;
  errorGeneric: string;
  errorLogout: string;
  loadingText: string;
  emptyText: string;
  tableHeaderCreatedAt: string;
  tableHeaderProject: string;
  tableHeaderSlug: string;
  tableHeaderName: string;
  tableHeaderEmail: string;
  tableHeaderPhone: string;
  tableHeaderBirthdate: string;
  tableHeaderOtherFields: string;
};

const SUBMISSIONS_MESSAGES: Record<AppLocale, SubmissionsMessages> = {
  en: {
    headerTitle: "All form submissions",
    headerDescription:
      "View form submissions across all projects for the current signed-in account.",
    errorUnauthorized:
      "You need to be signed in to view form submissions. Please log in again.",
    errorGeneric:
      "An error occurred while loading form submissions. Please try again later.",
    errorLogout:
      "An error occurred while logging out. Please try again later.",
    loadingText: "Loading form submissions...",
    emptyText: "No form submissions have been collected yet.",
    tableHeaderCreatedAt: "Submitted at",
    tableHeaderProject: "Project",
    tableHeaderSlug: "Slug",
    tableHeaderName: "Name",
    tableHeaderEmail: "Email",
    tableHeaderPhone: "Phone",
    tableHeaderBirthdate: "Birthdate",
    tableHeaderOtherFields: "Other fields",
  },
  ko: {
    headerTitle: "전체 폼 제출 내역",
    headerDescription:
      "로그인한 계정의 모든 프로젝트에 대한 폼 제출 데이터를 확인할 수 있습니다.",
    errorUnauthorized:
      "폼 제출 내역을 조회하려면 로그인이 필요합니다. 다시 로그인해 주세요.",
    errorGeneric:
      "폼 제출 내역을 불러오는 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.",
    errorLogout:
      "로그아웃 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.",
    loadingText: "폼 제출 내역을 불러오는 중입니다...",
    emptyText: "아직 수집된 폼 제출 내역이 없습니다.",
    tableHeaderCreatedAt: "제출 시각",
    tableHeaderProject: "프로젝트",
    tableHeaderSlug: "Slug",
    tableHeaderName: "이름",
    tableHeaderEmail: "이메일",
    tableHeaderPhone: "전화번호",
    tableHeaderBirthdate: "생년월일",
    tableHeaderOtherFields: "기타 필드",
  },
};

export function getSubmissionsMessages(locale: AppLocale | null | undefined): SubmissionsMessages {
  const key = (locale ?? DEFAULT_LOCALE) as AppLocale;
  return SUBMISSIONS_MESSAGES[key] ?? SUBMISSIONS_MESSAGES[DEFAULT_LOCALE];
}
