diff --git a/src/app/events/[eventID]/page.tsx b/src/app/events/[eventID]/page.tsx new file mode 100644 index 0000000..4248d7a --- /dev/null +++ b/src/app/events/[eventID]/page.tsx @@ -0,0 +1,175 @@ +'use client'; + +import React from 'react'; +import { usePathname } from 'next/navigation'; +import Logo from '@/components/misc/logo'; +import { ThemePicker } from '@/components/misc/theme-picker'; +import { Card, CardContent, CardHeader } from '@/components/ui/card'; +import { Label } from '@/components/ui/label'; +import { useGetApiEventEventID } from '@/generated/api/event/event'; +import { useGetApiUserMe } from '@/generated/api/user/user'; +import { RedirectButton } from '@/components/buttons/redirect-button'; +import { useSession } from 'next-auth/react'; +import ParticipantListEntry from '@/components/custom-ui/participant-list-entry'; + +export default function ShowEvent() { + const session = useSession(); + const pathname = usePathname(); + + // Extract eventId from URL like /events/[eventId] + const eventId = pathname.split('/').pop() || ''; + + // Fetch event data + const { data: eventData, isLoading, error } = useGetApiEventEventID(eventId); + const { data: userData, isLoading: userLoading } = useGetApiUserMe(); + + if (isLoading || userLoading) { + return ( +
+ Loading... +
+ ); + } + if (error || !eventData?.data?.event) { + return ( +
+ Error loading event. +
+ ); + } + + const event = eventData.data.event; + const organiserName = userData?.data.user?.name || 'Unknown User'; + + // Format dates & times for display + const formatDate = (isoString?: string) => { + if (!isoString) return '-'; + return new Date(isoString).toLocaleDateString(); + }; + const formatTime = (isoString?: string) => { + if (!isoString) return '-'; + return new Date(isoString).toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit', + }); + }; + + return ( +
+
+ +
+ + + + +
+
+
+
+ +
+
+

+ {event.title || 'Untitled Event'} +

+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + +
+
+
+ + +
+
+
+ {' '} +
+ {event.participants?.map((user) => ( + + ))} +
+
+
+ +
+
+ {session.data?.user?.id === event.organizer.id ? ( + + ) : null} +
+
+
+
+
+
+
+ ); +}