import { useMemo, useState } from 'react' import { Link, useParams } from 'react-router-dom' import { useGroups } from '../context/GroupsContext.jsx' function formatEUR(n) { return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 2, }).format(Number(n) || 0) } function formatDate(iso) { try { return new Intl.DateTimeFormat('fr-FR', { dateStyle: 'short', timeStyle: 'short', }).format(new Date(iso)) } catch { return iso || '—' } } export default function GroupDetailPage() { const { groupId } = useParams() const { groups, addGroupOrder, getOrdersForGroup, groupTotalEuros, } = useGroups() const group = useMemo( () => groups.find((g) => g.id === String(groupId)), [groups, groupId], ) const lines = group ? getOrdersForGroup(group.id) : [] const total = group ? groupTotalEuros(group.id) : 0 const [contributor, setContributor] = useState('') const [amount, setAmount] = useState('') const [note, setNote] = useState('') const [err, setErr] = useState(null) const [ok, setOk] = useState(null) function handleSubmit(e) { e.preventDefault() setErr(null) setOk(null) if (!group) return try { addGroupOrder(group.id, { contributor, amount, note, }) setContributor('') setAmount('') setNote('') setOk('Contribution enregistrée (POST /api/groups/:id/orders en local).') } catch (ex) { setErr(ex?.message || 'Impossible d’enregistrer.') } } if (!group) { return (

Groupe introuvable.

← Liste des groupes
) } return (
← Tous les groupes

{group.name}

Pool actuel : {formatEUR(total)} · id{' '} {group.id.slice(0, 8)}…

{err ? (

{err}

) : null} {ok ?

{ok}

: null}

Participer à la commande groupée