🐛 Handle missing polls (#1455)

This commit is contained in:
Luke Vella 2024-12-02 14:21:36 +00:00 committed by GitHub
parent 82ebcd8752
commit 983c6e24d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 10 deletions

View file

@ -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 (
<Hydrate state={dehydrate(trpc.queryClient)}>
<Providers>{children}</Providers>

View file

@ -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();

View file

@ -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}`);