Cap event page ticket quantity at 5 per booking.

Limit the quantity stepper to five tickets or remaining spots, whichever is lower.
This commit is contained in:
Michilis
2026-06-04 22:53:39 +00:00
parent a8b72b47b1
commit 0f7573c934

View File

@@ -23,6 +23,8 @@ interface EventDetailClientProps {
initialEvent: Event;
}
const MAX_TICKETS_PER_PERSON = 5;
export default function EventDetailClient({ eventId, initialEvent }: EventDetailClientProps) {
const { t, locale } = useLanguage();
const [event, setEvent] = useState<Event>(initialEvent);
@@ -44,7 +46,13 @@ export default function EventDetailClient({ eventId, initialEvent }: EventDetail
// Spots left: never negative; sold out when confirmed >= capacity
const spotsLeft = Math.max(0, event.capacity - (event.bookedCount ?? 0));
const isSoldOut = (event.bookedCount ?? 0) >= event.capacity;
const maxTickets = isSoldOut ? 0 : Math.max(1, spotsLeft);
const maxTickets = isSoldOut ? 0 : Math.min(MAX_TICKETS_PER_PERSON, Math.max(1, spotsLeft));
useEffect(() => {
if (maxTickets > 0) {
setTicketQuantity((q) => Math.min(q, maxTickets));
}
}, [maxTickets]);
const decreaseQuantity = () => {
setTicketQuantity(prev => Math.max(1, prev - 1));