From d09dbece5fc4842293b33e753016c33a605cf366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Sun, 23 Nov 2025 15:35:34 +0100 Subject: [PATCH] Fix upcoming specials display on genre pages --- app/[genre]/page.tsx | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/app/[genre]/page.tsx b/app/[genre]/page.tsx index 4a4ad42..88f0ff4 100644 --- a/app/[genre]/page.tsx +++ b/app/[genre]/page.tsx @@ -18,6 +18,17 @@ export default async function GenrePage({ params }: PageProps) { const genres = await prisma.genre.findMany({ orderBy: { name: 'asc' } }); const specials = await prisma.special.findMany({ orderBy: { name: 'asc' } }); + const now = new Date(); + const activeSpecials = specials.filter(s => { + const isStarted = !s.launchDate || s.launchDate <= now; + const isEnded = s.endDate && s.endDate < now; + return isStarted && !isEnded; + }); + + const upcomingSpecials = specials.filter(s => { + return s.launchDate && s.launchDate > now; + }); + return ( <>
@@ -40,12 +51,12 @@ export default async function GenrePage({ params }: PageProps) { ))} {/* Separator if both exist */} - {genres.length > 0 && specials.length > 0 && ( + {genres.length > 0 && activeSpecials.length > 0 && ( | )} {/* Specials */} - {specials.map(s => ( + {activeSpecials.map(s => ( ))}
+ + {/* Upcoming Specials */} + {upcomingSpecials.length > 0 && ( +
+ Coming soon: {upcomingSpecials.map(s => ( + + ★ {s.name} ({s.launchDate ? new Date(s.launchDate).toLocaleDateString('de-DE', { + day: '2-digit', + month: '2-digit', + year: 'numeric', + timeZone: process.env.TZ + }) : ''}) + {s.curator && Curated by {s.curator}} + + ))} +
+ )}