'use client' import { useState } from 'react' import { useTranslations } from 'next-intl' import type { GoldOption } from '@/lib/admin-gold' export function AdminGoldManager({ initial }: { initial: GoldOption[] }) { const t = useTranslations('Admin') const [opts, setOpts] = useState(initial) const [form, setForm] = useState({ goldAmount: '', price: '' }) const [busy, setBusy] = useState(false) function upd(k: string, v: string) { setForm((f) => ({ ...f, [k]: v })) } async function create(e: React.FormEvent) { e.preventDefault() const goldAmount = Number(form.goldAmount) const price = Number(form.price) if (busy || !(goldAmount > 0) || !(price >= 0)) return setBusy(true) try { const res = await fetch('/api/admin/gold', { method: 'POST', headers: { 'Content-Type': 'application/json' }, credentials: 'same-origin', body: JSON.stringify({ goldAmount, price }), }) const data: { success?: boolean; id?: number } = await res.json() if (data.success && data.id) { setOpts( [...opts, { id: data.id, gold_amount: goldAmount, price }].sort((a, b) => a.gold_amount - b.gold_amount), ) setForm({ goldAmount: '', price: '' }) } } finally { setBusy(false) } } async function remove(id: number) { if (!confirm(t('confirmDelete'))) return const res = await fetch(`/api/admin/gold/${id}`, { method: 'DELETE', credentials: 'same-origin' }) if ((await res.json()).success) setOpts(opts.filter((o) => o.id !== id)) } return (
{t('goldAmount')} upd('goldAmount', e.target.value)} placeholder="10000" /> {t('goldPrice')} upd('price', e.target.value)} placeholder="4.99" />

{opts.length === 0 ? (

{t('noGold')}

) : ( {opts.map((o) => ( ))}
{o.gold_amount.toLocaleString()} {t('goldUnit')}

{o.price.toFixed(2)} €

)}
) }