"use client"; import { useState } from "react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { useTranslations } from "next-intl"; import { useLocale, SUPPORTED_LOCALES, type Locale } from "@/lib/i18n/provider"; type UserProps = { name: string; email: string; image: string | null; locale: string; bio: string | null; privateBio: string | null; }; export function SettingsForm({ user }: { user: UserProps }) { const t = useTranslations("settingsForm"); const t_common = useTranslations("common"); const { setLocale } = useLocale(); const [name, setName] = useState(user.name); const [bio, setBio] = useState(user.bio ?? ""); const [privateBio, setPrivateBio] = useState(user.privateBio ?? ""); const [saving, setSaving] = useState(false); const [savingBio, setSavingBio] = useState(false); async function saveProfile() { setSaving(true); try { const res = await fetch("/api/v1/users/me", { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name }), }); if (res.ok) toast.success(t_common("saved")); else toast.error(t_common("saveFailed")); } finally { setSaving(false); } } async function saveBios() { setSavingBio(true); try { const res = await fetch("/api/v1/users/me", { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ bio: bio.trim() || null, privateBio: privateBio.trim() || null, }), }); if (res.ok) toast.success(t_common("saved")); else toast.error(t_common("saveFailed")); } finally { setSavingBio(false); } } const bioUnchanged = bio === (user.bio ?? "") && privateBio === (user.privateBio ?? ""); return (

{t("profile")}

setName(e.target.value)} />

{t("bio")}

{t("publicBioDescription")}