"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...
)}
);
}