improve graphql error handling
This commit is contained in:
@@ -27,12 +27,15 @@ export async function generateMetadata(
|
||||
const { data, error } = await getClient().query(venueBySlugQuery, {
|
||||
slug: params.slug,
|
||||
});
|
||||
const venue = (data?.venue ?? []) as VenueFragment[];
|
||||
|
||||
if (!venue) {
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
}
|
||||
if (!data?.venue) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const venue = data.venue as VenueFragment;
|
||||
const metadata = await getSeoMetadata(venue, parent);
|
||||
return metadata;
|
||||
}
|
||||
@@ -48,11 +51,16 @@ export async function generateStaticParams() {
|
||||
`);
|
||||
const { data, error } = await getClient().query(allVenueSlugsQuery, {});
|
||||
|
||||
if (data === undefined || error) {
|
||||
throw new Error("failed to generate static params");
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
}
|
||||
if (!data?.pages) {
|
||||
throw new Error(
|
||||
"Failed to generate static params for subpages of /lokaler"
|
||||
);
|
||||
}
|
||||
|
||||
return data?.pages.map((page: any) => ({
|
||||
return data.pages.map((page: any) => ({
|
||||
slug: page.slug,
|
||||
}));
|
||||
}
|
||||
@@ -62,11 +70,14 @@ export default async function Page({ params }: { params: { slug: string } }) {
|
||||
slug: params.slug,
|
||||
});
|
||||
|
||||
if (data?.venue === null || error) {
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
}
|
||||
if (!data?.venue) {
|
||||
return notFound();
|
||||
}
|
||||
|
||||
const venue = (data?.venue ?? {}) as VenueFragment;
|
||||
const venue = data.venue as VenueFragment;
|
||||
const featuredImage: any = venue.featuredImage;
|
||||
|
||||
return (
|
||||
|
||||
@@ -74,19 +74,30 @@ export async function generateMetadata(
|
||||
parent: ResolvingMetadata
|
||||
): Promise<Metadata | null> {
|
||||
const { data, error } = await getClient().query(venueIndexQuery, {});
|
||||
const index = (data?.index ?? []) as VenueIndexFragment;
|
||||
|
||||
if (!index) {
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
}
|
||||
if (!data?.index) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const index = (data?.index ?? []) as VenueIndexFragment;
|
||||
const metadata = await getSeoMetadata(index, parent);
|
||||
return metadata;
|
||||
}
|
||||
|
||||
export default async function Page() {
|
||||
const { data, error } = await getClient().query(venueIndexQuery, {});
|
||||
const index = (data?.index ?? []) as VenueIndexFragment;
|
||||
|
||||
if (error) {
|
||||
throw new Error(error.message);
|
||||
}
|
||||
if (!data?.index || !data?.venues) {
|
||||
throw new Error("Failed to render /lokaler");
|
||||
}
|
||||
|
||||
const index = data.index as VenueIndexFragment;
|
||||
const venues = (data?.venues ?? []) as VenueFragment[];
|
||||
const visibleVenues = venues.filter((x) => x.showInOverview);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user