diff --git a/app/(main)/events/[id]/page.tsx b/app/(main)/events/[id]/page.tsx index eb10744..775ad53 100644 --- a/app/(main)/events/[id]/page.tsx +++ b/app/(main)/events/[id]/page.tsx @@ -158,7 +158,12 @@ export default function EventDetailsPage({ params }: EventDetailsPageProps) { }, [event, user, isLoading, router]); // ADD THESE: Fetch tickets and mutations - const { data: ticketsData, isLoading: ticketsLoading } = useEventTicketsQuery( + const { + data: ticketsData, + isLoading: ticketsLoading, + isError: isTicketsError, + error: ticketsError, + } = useEventTicketsQuery( { eventId: params.id }, ); const createTicketMutation = useCreateEventTicketMutation(); @@ -1377,6 +1382,15 @@ export default function EventDetailsPage({ params }: EventDetailsPageProps) {
+ ) : isTicketsError ? ( +
+

Failed to load tickets.

+

+ {ticketsError instanceof Error + ? ticketsError.message + : "Please refresh and try again."} +

+
) : tickets.length === 0 ? (

{`No tickets created yet. Click "Add Ticket" to create one.`}

diff --git a/lib/api/services/ticketService.ts b/lib/api/services/ticketService.ts index f9545ab..a752c11 100644 --- a/lib/api/services/ticketService.ts +++ b/lib/api/services/ticketService.ts @@ -1,5 +1,21 @@ import { BASE_URL } from "../../config/api"; import { CreateEventTicketRequest } from "@/lib/types/requests/ticketsRequests"; +import { getStoredToken } from "./authService"; + +const createAuthHeaders = ( + additionalHeaders: Record = {}, +): Record => { + const headers: Record = { + ...additionalHeaders, + }; + + const token = getStoredToken(); + if (token) { + headers.Authorization = `Bearer ${token}`; + } + + return headers; +}; export const findAllTicketEvents = async (eventId?: string) => { const url = new URL(`${BASE_URL}/tickets`); @@ -9,9 +25,9 @@ export const findAllTicketEvents = async (eventId?: string) => { const response = await fetch(url.toString(), { method: "GET", - headers: { - "Content-Type": "application/json" - }, + headers: createAuthHeaders({ + "Content-Type": "application/json", + }), credentials: "include" }); @@ -23,9 +39,9 @@ export const findAllTicketEvents = async (eventId?: string) => { export const findOneEventTicket = async (id: string) => { const response = await fetch(`${BASE_URL}/tickets/${id}`, { method: "GET", - headers: { - "Content-Type": "application/json" - }, + headers: createAuthHeaders({ + "Content-Type": "application/json", + }), credentials: "include" }); @@ -42,9 +58,9 @@ export const createEventTicket = async (ticketData: CreateEventTicketRequest) => const response = await fetch(`${BASE_URL}/tickets/create`, { method: "POST", - headers: { - "Content-Type": "application/json" - }, + headers: createAuthHeaders({ + "Content-Type": "application/json", + }), credentials: "include", body: JSON.stringify(formattedData) }); @@ -60,9 +76,9 @@ export const updateEventTicket = async ( ) => { const response = await fetch(`${BASE_URL}/tickets/update/${id}`, { method: "PATCH", - headers: { - "Content-Type": "application/json" - }, + headers: createAuthHeaders({ + "Content-Type": "application/json", + }), credentials: "include", body: JSON.stringify(ticketData) }); @@ -76,6 +92,7 @@ export const updateEventTicket = async ( export const deleteEventTicket = async (id: string) => { const response = await fetch(`${BASE_URL}/tickets/delete/${id}`, { method: "DELETE", + headers: createAuthHeaders(), credentials: "include" });