mirror of
https://github.com/lukevella/rallly.git
synced 2025-08-06 09:59:00 +02:00
🐛 Handle missing polls (#1455)
This commit is contained in:
parent
82ebcd8752
commit
983c6e24d5
3 changed files with 15 additions and 10 deletions
|
@ -1,4 +1,5 @@
|
||||||
import { dehydrate, Hydrate } from "@tanstack/react-query";
|
import { dehydrate, Hydrate } from "@tanstack/react-query";
|
||||||
|
import { notFound } from "next/navigation";
|
||||||
|
|
||||||
import { createSSRHelper } from "@/trpc/server/create-ssr-helper";
|
import { createSSRHelper } from "@/trpc/server/create-ssr-helper";
|
||||||
|
|
||||||
|
@ -13,11 +14,16 @@ export default async function Layout({
|
||||||
}) {
|
}) {
|
||||||
const trpc = await createSSRHelper();
|
const trpc = await createSSRHelper();
|
||||||
|
|
||||||
await Promise.all([
|
const [poll] = await Promise.all([
|
||||||
trpc.polls.get.prefetch({ urlId: params.urlId }),
|
trpc.polls.get.fetch({ urlId: params.urlId }),
|
||||||
trpc.polls.participants.list.prefetch({ pollId: params.urlId }),
|
trpc.polls.participants.list.prefetch({ pollId: params.urlId }),
|
||||||
trpc.polls.comments.list.prefetch({ pollId: params.urlId }),
|
trpc.polls.comments.list.prefetch({ pollId: params.urlId }),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (!poll) {
|
||||||
|
notFound();
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Hydrate state={dehydrate(trpc.queryClient)}>
|
<Hydrate state={dehydrate(trpc.queryClient)}>
|
||||||
<Providers>{children}</Providers>
|
<Providers>{children}</Providers>
|
||||||
|
|
|
@ -12,14 +12,13 @@ export default async function Layout({
|
||||||
const trpc = await createSSRHelper();
|
const trpc = await createSSRHelper();
|
||||||
|
|
||||||
// Prefetch all queries used in PollLayout
|
// Prefetch all queries used in PollLayout
|
||||||
await Promise.all([
|
const [poll] = await Promise.all([
|
||||||
trpc.polls.get.prefetch({ urlId: params.urlId }),
|
trpc.polls.get.fetch({ urlId: params.urlId }),
|
||||||
trpc.polls.participants.list.prefetch({ pollId: params.urlId }),
|
trpc.polls.participants.list.prefetch({ pollId: params.urlId }),
|
||||||
trpc.polls.getWatchers.prefetch({ pollId: params.urlId }),
|
trpc.polls.getWatchers.prefetch({ pollId: params.urlId }),
|
||||||
trpc.polls.comments.list.prefetch({ pollId: params.urlId }),
|
trpc.polls.comments.list.prefetch({ pollId: params.urlId }),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const poll = await prisma.poll.findUnique({ where: { id: params.urlId } });
|
|
||||||
if (!poll) {
|
if (!poll) {
|
||||||
notFound();
|
notFound();
|
||||||
}
|
}
|
||||||
|
@ -36,7 +35,10 @@ export async function generateMetadata({
|
||||||
}: {
|
}: {
|
||||||
params: { locale: string; urlId: string };
|
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) {
|
if (!poll) {
|
||||||
return notFound();
|
return notFound();
|
||||||
|
|
|
@ -472,10 +472,7 @@ export const polls = router({
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!res) {
|
if (!res) {
|
||||||
throw new TRPCError({
|
return null;
|
||||||
code: "NOT_FOUND",
|
|
||||||
message: "Poll not found",
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
const inviteLink = shortUrl(`/invite/${res.id}`);
|
const inviteLink = shortUrl(`/invite/${res.id}`);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue