"use client"; import { useTransition, useState } from "react"; import { useRouter } from "next/navigation"; import { languageName, LANGUAGES } from "@/lib/languages"; import { X, Plus } from "lucide-react"; import ReactCountryFlag from "react-country-flag"; export function LearningLanguagesEditor({ targetLangs, nativeLang, level, }: { targetLangs: string[]; nativeLang: string; level: string; }) { const router = useRouter(); const [isPending, startTransition] = useTransition(); const [isAdding, setIsAdding] = useState(false); function updateLangs(newList: string[]) { if (isPending) return; startTransition(async () => { try { await fetch("/api/me/profile", { method: "PUT", headers: { "content-type": "application/json" }, body: JSON.stringify({ nativeLang, targetLang: newList[0] || "en", targetLangs: newList, level }), }); router.refresh(); } finally { setIsAdding(false); } }); } const availableLangs = LANGUAGES.filter( (l) => l.code !== nativeLang && !targetLangs.includes(l.code) ); return (
{targetLangs.map((lang) => { const label = languageName(lang); return (
{label}
); })}
{isAdding && (
{availableLangs.length > 0 ? ( availableLangs.map((lang) => ( )) ) : (
No more languages
)}
)} {isPending && (
Updating languages...
)}
); }