diff --git a/client/src/pages/games/[id].tsx b/client/src/pages/games/[id].tsx index 222ee75..fb956ff 100644 --- a/client/src/pages/games/[id].tsx +++ b/client/src/pages/games/[id].tsx @@ -1,10 +1,12 @@ import Image from "next/image"; +import Link from "next/link"; import { useRouter } from "next/router"; import React from "react"; import { SocialIcon } from "react-social-icons"; import { GameEmbed } from "@/components/ui/GameEmbed"; import { ItchEmbed } from "@/components/ui/ItchEmbed"; +import { useEvent } from "@/hooks/useEvent"; import { useGame } from "@/hooks/useGames"; export default function IndividualGamePage() { @@ -17,6 +19,9 @@ export default function IndividualGamePage() { error, isError, } = useGame(router.isReady ? id : undefined); + const { data: eventData } = useEvent( + game?.event ? String(game.event) : undefined, + ); if (isPending) { return ( @@ -55,6 +60,8 @@ export default function IndividualGamePage() { const gameEmbedID = game.itchGameEmbedID; const gameWidth = game.itchGameWidth; const gameHeight = game.itchGameHeight; + const eventID = game.event; + const eventName = eventData?.name || ""; const completionLabels: Record = { 1: "WIP", @@ -65,8 +72,6 @@ export default function IndividualGamePage() { const devStage = completionLabels[game.completion] ?? "Stage Unknown"; - // TODO ADD EVENT - const event = "Game Jam November 2025"; // TODO ADD ARTIMAGES const artImages: { src: string; alt: string }[] = []; // const artImages = [ @@ -129,12 +134,12 @@ export default function IndividualGamePage() { key={c.member_id} className="flex items-center gap-x-2" > - {c.name} - + {Array.isArray(c.social_media) && c.social_media.map((sm) => ( Event - {event} + + {eventID && eventName ? ( + + {eventName} + + ) : ( + + No past/upcoming event + + )} + diff --git a/server/game_dev/views.py b/server/game_dev/views.py index 24e1879..50da723 100644 --- a/server/game_dev/views.py +++ b/server/game_dev/views.py @@ -60,7 +60,16 @@ class EventDetailAPIView(generics.RetrieveAPIView): lookup_url_kwarg = "id" def get_queryset(self): - return Event.objects.filter(id=self.kwargs["id"]) + now = timezone.now().date() + return Event.objects.filter(id=self.kwargs["id"], publicationDate__lte=now) + + def get_object(self): + queryset = self.get_queryset() + try: + return queryset.get() + except Event.DoesNotExist: + from rest_framework.exceptions import NotFound + raise NotFound(detail="The event is not yet published by admin or does not exist.") class GameshowcaseAPIView(APIView):