import { currentLanguage } from "../../shared/i18n.js";

const SETUP_ERROR_MESSAGES = {
  en: {
    account_not_available_for_execution: "This history source can only be read. Select a signed-in account before sending.", account_not_found: "Selected account is no longer available. Choose another account before starting a Chat.", invalid_session_context: "Selected account or project is no longer available. Choose them again before continuing.", workspace_not_found: "Selected project is no longer available. Choose another project before starting a Chat.", workspace_mismatch: "The Chat opened in a different project, so no message was sent. Select the project again.", chat_create_failed: "Could not start Chat. Check the selected account and project, then try again.", chat_message_failed: "Could not send message. Check the selected account and project, then try again.", chat_open_failed: "Could not open Chat. Check the selected account and project, then try again.", upload_failed: "Could not upload image. Check the selected project, then try again.", attachment_in_use: "That image is being used by running or queued work. Try again after it finishes.", attachment_delete_failed: "The image was not deleted. Check PC storage and try again.", request_failed: "Request failed. Try again.", stop_failed: "Could not confirm that work stopped. Refresh the Chat to check its actual state.", turn_stop_unconfirmed: "Could not confirm that work stopped. Refresh the Chat to check its actual state.", turn_start_outcome_unknown: "Codex start status could not be confirmed. Refresh the Chat before trying again.", turn_start_timeout: "Codex did not start work within 30 seconds. The Chat was stopped; try again.", turn_start_failed: "Codex could not start the work. The Chat was stopped; try again.", stop_unavailable: "There is no active work to stop. Refresh the Chat to check its actual state.", queue_action_failed: "Could not update the waiting message. Refresh the Chat and try again."
  },
  ko: {
    account_not_available_for_execution: "이 기록 소스는 읽기만 할 수 있습니다. 전송 전에 로그인한 계정을 선택하세요.", account_not_found: "선택한 계정을 더 이상 사용할 수 없습니다. 채팅을 시작하기 전에 다른 계정을 선택하세요.", invalid_session_context: "선택한 계정 또는 프로젝트를 더 이상 사용할 수 없습니다. 계속하기 전에 다시 선택하세요.", workspace_not_found: "선택한 프로젝트를 더 이상 사용할 수 없습니다. 채팅을 시작하기 전에 다른 프로젝트를 선택하세요.", workspace_mismatch: "다른 프로젝트에서 채팅이 열려 메시지를 보내지 않았습니다. 프로젝트를 다시 선택하세요.", chat_create_failed: "채팅을 시작하지 못했습니다. 선택한 계정과 프로젝트를 확인한 뒤 다시 시도하세요.", chat_message_failed: "메시지를 보내지 못했습니다. 선택한 계정과 프로젝트를 확인한 뒤 다시 시도하세요.", chat_open_failed: "채팅을 열지 못했습니다. 선택한 계정과 프로젝트를 확인한 뒤 다시 시도하세요.", upload_failed: "이미지를 업로드하지 못했습니다. 선택한 프로젝트를 확인한 뒤 다시 시도하세요.", attachment_in_use: "실행 중이거나 대기 중인 작업에서 이 이미지를 사용하고 있습니다. 작업이 끝난 뒤 다시 시도하세요.", attachment_delete_failed: "이미지를 삭제하지 않았습니다. PC 저장소를 확인한 뒤 다시 시도하세요.", request_failed: "요청에 실패했습니다. 다시 시도하세요.", stop_failed: "작업 중단 여부를 확인하지 못했습니다. 채팅을 새로고침해 실제 상태를 확인하세요.", turn_stop_unconfirmed: "작업 중단 여부를 확인하지 못했습니다. 채팅을 새로고침해 실제 상태를 확인하세요.", turn_start_outcome_unknown: "Codex 작업 시작 상태를 확인하지 못했습니다. 다시 시도하기 전에 채팅을 새로고침하세요.", turn_start_timeout: "Codex가 30초 안에 작업을 시작하지 못했습니다. 작업을 중단했으니 다시 시도하세요.", turn_start_failed: "Codex가 작업을 시작하지 못했습니다. 작업을 중단했으니 다시 시도하세요.", stop_unavailable: "중단할 활성 작업이 없습니다. 채팅을 새로고침해 실제 상태를 확인하세요.", queue_action_failed: "대기 메시지를 변경하지 못했습니다. 채팅을 새로고침한 뒤 다시 시도하세요."
  }
};

export function setupErrorMessage(error, fallback = "request_failed") {
  const code = typeof error?.message === "string" ? error.message : "";
  const messages = SETUP_ERROR_MESSAGES[currentLanguage()];
  return messages[code] ?? messages[fallback] ?? fallback;
}

export function actionBlockedReason({ hasAccount, hasWorkspace }) {
  if (!hasAccount) return currentLanguage() === "ko" ? "채팅을 시작하려면 Codex 계정에 로그인하세요." : "Sign in to a Codex account to start a Chat.";
  return "";
}

export function projectSetupPrompt({ hasAccount, hasWorkspace }) {
  if (hasAccount && !hasWorkspace) return currentLanguage() === "ko" ? "채팅을 시작하려면 프로젝트 폴더를 선택하거나 만드세요." : "Choose or create a project folder to start a Chat.";
  return "";
}
