"use client"; import { useEffect, useState, useRef } from "react"; import { useTranslations } from "next-intl"; import { Card, Select } from "@/shared/components"; import { DEFAULT_RESPONSES_PREVIOUS_RESPONSE_ID_MODE, RESPONSES_PREVIOUS_RESPONSE_ID_MODES, type ResponsesPreviousResponseIdMode, } from "@/shared/constants/responsesPreviousResponseId"; const MODE_SET = new Set(RESPONSES_PREVIOUS_RESPONSE_ID_MODES); function normalizeMode(value: unknown): ResponsesPreviousResponseIdMode { return typeof value === "string" && MODE_SET.has(value) ? (value as ResponsesPreviousResponseIdMode) : DEFAULT_RESPONSES_PREVIOUS_RESPONSE_ID_MODE; } export default function ResponsesStatePolicyTab() { const [mode, setMode] = useState( DEFAULT_RESPONSES_PREVIOUS_RESPONSE_ID_MODE ); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [status, setStatus] = useState<"" | "saved" | "error">(""); const t = useTranslations("settings"); useEffect(() => { let cancelled = false; fetch("/api/settings") .then((res) => res.json()) .then((data) => { if (cancelled) return; setMode(normalizeMode(data?.responsesPreviousResponseIdMode)); setLoading(false); }) .catch(() => { if (!cancelled) setLoading(false); }); return () => { cancelled = true; }; }, []); const save = async (nextMode: ResponsesPreviousResponseIdMode) => { if (saving || loading || nextMode === mode) return; const previousMode = mode; setMode(nextMode); setSaving(true); setStatus(""); try { const res = await fetch("/api/settings", { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ responsesPreviousResponseIdMode: nextMode }), }); if (!res.ok) { setMode(previousMode); setStatus("error"); return; } setStatus("saved"); setTimeout(() => setStatus(""), 2000); } catch { setMode(previousMode); setStatus("error"); } finally { setSaving(false); } }; return (

{t("responsesStateTitle")}

{t("responsesStateDesc")}

{status === "saved" && ( check_circle{" "} {t("saved")} )} {status === "error" && ( error{" "} {t("responsesStateSaveError")} )}