import { useEffect, useState } from "react"; import { ApiError } from "../../api/client"; import { Spinner } from "../../components/Spinner"; import { useToast } from "../../context/ToastContext"; import { useAdminFactions, useAdminRenameFaction } from "../../hooks/admin"; export function AdminFactionsPage() { const { data: factions, isLoading } = useAdminFactions(); const rename = useAdminRenameFaction(); const toast = useToast(); const [names, setNames] = useState>({}); useEffect(() => { if (factions) { setNames(Object.fromEntries(factions.map((f) => [f.id, f.name_ru]))); } }, [factions]); if (isLoading) return ; const save = async (id: number) => { try { await rename.mutateAsync({ factionId: id, name_ru: names[id] }); toast.show("Название обновлено во всей системе"); } catch (e) { toast.show(e instanceof ApiError ? e.message : "Ошибка"); } }; return (

Фракции

Переименование меняет название фракции во всех партиях и статистике.

{(factions ?? []).map((f) => (
{f.code}
setNames((n) => ({ ...n, [f.id]: e.target.value }))} />
))}
); }