import { useState, useEffect } from 'react' import { Modal } from '../components/ui/Modal.tsx' import { Button } from '../components/ui/Button.tsx' import { TicketTable } from '../components/tickets/TicketTable.tsx' import { NewTicketForm } from '../components/tickets/NewTicketForm.tsx' import { useModal } from '../hooks/useModal.ts' import { getStorage } from '../lib/storage.ts' import type { Ticket } from '../lib/types.ts' interface UserPageProps { storageMode: 'local' | 'remote' } export function UserPage({ storageMode }: UserPageProps) { const storage = getStorage(storageMode) const [tickets, setTickets] = useState([]) const newTicketModal = useModal() useEffect(() => { const result = storage.getTickets() if (result instanceof Promise) { result.then(setTickets) } else { setTickets(result) } }, [storageMode]) const handleCreate = async (form: Pick) => { const result = storage.createTicket(form) const ticket = result instanceof Promise ? await result : result setTickets(prev => [ticket, ...prev]) newTicketModal.close() } const handleDelete = async (id: string) => { const result = storage.deleteTicket(id) if (result instanceof Promise) await result setTickets(prev => prev.filter(t => t.id !== id)) } return ( <>

My Tickets

{tickets.length} {tickets.length === 1 ? 'ticket' : 'tickets'}

) }