diff --git a/web/src/lib/api.ts b/web/src/lib/api.ts index 59d5725..7bbeb08 100644 --- a/web/src/lib/api.ts +++ b/web/src/lib/api.ts @@ -132,8 +132,11 @@ export const api = { listDemos: () => request<{ items: Demo[] }>('GET', '/demos'), getDemo: (id: string) => request('GET', `/demos/${id}`), - createDemo: (leadId?: string) => - request('POST', '/demos', leadId ? { lead_id: leadId } : {}), + createDemo: (username: string, leadId?: string) => + request('POST', '/demos', { + username, + ...(leadId ? { lead_id: leadId } : {}), + }), extendDemo: (id: string) => request('POST', `/demos/${id}/extend`), deleteDemo: (id: string) => request('DELETE', `/demos/${id}`), diff --git a/web/src/pages/backoffice/Demos.tsx b/web/src/pages/backoffice/Demos.tsx index a5bbb16..b403da5 100644 --- a/web/src/pages/backoffice/Demos.tsx +++ b/web/src/pages/backoffice/Demos.tsx @@ -3,8 +3,11 @@ import { Badge, Button, Flex, + FormControl, + FormLabel, Heading, HStack, + Input, Link, Modal, ModalBody, @@ -45,6 +48,10 @@ export function Demos() { const [busy, setBusy] = useState(null) const [toDelete, setToDelete] = useState(null) + // --- Formulaire de création --- + const [newUsername, setNewUsername] = useState('') + const [newLeadId, setNewLeadId] = useState('') + // --- Détails d'une démo (modale) --- const [detailsFor, setDetailsFor] = useState(null) const [details, setDetails] = useState(null) @@ -69,10 +76,16 @@ export function Demos() { }, [load]) const create = async () => { + if (!newUsername.trim()) { + toast({ status: 'warning', title: 'Username requis' }) + return + } setBusy('new') try { - await api.createDemo() + await api.createDemo(newUsername.trim(), newLeadId.trim() || undefined) toast({ status: 'success', title: 'Démo lancée' }) + setNewUsername('') + setNewLeadId('') await load() } catch (err) { const msg = err instanceof ApiError ? err.message : 'Erreur' @@ -138,9 +151,33 @@ export function Demos() { return ( <> - - Démos + + + Démos + + + + Username + + setNewUsername(e.target.value)} + /> + + + + Lead ID (optionnel) + + setNewLeadId(e.target.value)} + /> +