diff --git a/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx b/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx index ab8a9588a..aae2796b0 100644 --- a/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx +++ b/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx @@ -1,4 +1,5 @@ import { dehydrate, Hydrate } from "@tanstack/react-query"; +import { notFound } from "next/navigation"; import { createSSRHelper } from "@/trpc/server/create-ssr-helper"; @@ -13,11 +14,16 @@ export default async function Layout({ }) { const trpc = await createSSRHelper(); - await Promise.all([ - trpc.polls.get.prefetch({ urlId: params.urlId }), + const [poll] = await Promise.all([ + trpc.polls.get.fetch({ urlId: params.urlId }), trpc.polls.participants.list.prefetch({ pollId: params.urlId }), trpc.polls.comments.list.prefetch({ pollId: params.urlId }), ]); + + if (!poll) { + notFound(); + } + return ( {children} diff --git a/apps/web/src/app/[locale]/poll/[urlId]/layout.tsx b/apps/web/src/app/[locale]/poll/[urlId]/layout.tsx index bd42f1845..5783c89d0 100644 --- a/apps/web/src/app/[locale]/poll/[urlId]/layout.tsx +++ b/apps/web/src/app/[locale]/poll/[urlId]/layout.tsx @@ -12,14 +12,13 @@ export default async function Layout({ const trpc = await createSSRHelper(); // Prefetch all queries used in PollLayout - await Promise.all([ - trpc.polls.get.prefetch({ urlId: params.urlId }), + const [poll] = await Promise.all([ + trpc.polls.get.fetch({ urlId: params.urlId }), trpc.polls.participants.list.prefetch({ pollId: params.urlId }), trpc.polls.getWatchers.prefetch({ pollId: params.urlId }), trpc.polls.comments.list.prefetch({ pollId: params.urlId }), ]); - const poll = await prisma.poll.findUnique({ where: { id: params.urlId } }); if (!poll) { notFound(); } @@ -36,7 +35,10 @@ export async function generateMetadata({ }: { params: { locale: string; urlId: string }; }) { - const poll = await prisma.poll.findUnique({ where: { id: params.urlId } }); + const poll = await prisma.poll.findUnique({ + where: { id: params.urlId }, + select: { title: true }, + }); if (!poll) { return notFound(); diff --git a/apps/web/src/trpc/routers/polls.ts b/apps/web/src/trpc/routers/polls.ts index 73df076ca..8344c70e3 100644 --- a/apps/web/src/trpc/routers/polls.ts +++ b/apps/web/src/trpc/routers/polls.ts @@ -472,10 +472,7 @@ export const polls = router({ }); if (!res) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "Poll not found", - }); + return null; } const inviteLink = shortUrl(`/invite/${res.id}`);