web: centralize prop fetching for live + preview, fix preview banner breakage
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { graphql } from "@/gql";
|
||||
import { type SponsorFragment, type SponsorsPageFragment } from "@/gql/graphql";
|
||||
import { getClient } from "@/app/client";
|
||||
import { PageHeader } from "@/components/general/PageHeader";
|
||||
import { PageContent } from "@/components/general/PageContent";
|
||||
import { SponsorList } from "@/components/sponsor/SponsorList";
|
||||
@@ -22,7 +23,7 @@ const SponsorsPageFragmentDefinition = graphql(`
|
||||
}
|
||||
`);
|
||||
|
||||
export const sponsorsPageQuery = graphql(`
|
||||
const sponsorsPageQuery = graphql(`
|
||||
query sponsors {
|
||||
page: sponsorsPage {
|
||||
... on SponsorsPage {
|
||||
@@ -32,7 +33,22 @@ export const sponsorsPageQuery = graphql(`
|
||||
}
|
||||
`);
|
||||
|
||||
export function SponsorsPageView({ page }: { page: SponsorsPageFragment }) {
|
||||
export type SponsorsPageViewProps = { page: SponsorsPageFragment };
|
||||
|
||||
export async function loadSponsorsPageProps(overrides?: {
|
||||
pageOverride?: SponsorsPageFragment;
|
||||
}): Promise<SponsorsPageViewProps> {
|
||||
if (overrides?.pageOverride) {
|
||||
return { page: overrides.pageOverride };
|
||||
}
|
||||
const { data, error } = await getClient().query(sponsorsPageQuery, {});
|
||||
if (error) throw new Error(error.message);
|
||||
const page = data?.page as SponsorsPageFragment | undefined;
|
||||
if (!page) throw new Error("Failed to load /sponsorer");
|
||||
return { page };
|
||||
}
|
||||
|
||||
export function SponsorsPageView({ page }: SponsorsPageViewProps) {
|
||||
return (
|
||||
<main className="site-main" id="main">
|
||||
<PageHeader heading={page.title} lead={page.lead} />
|
||||
|
||||
Reference in New Issue
Block a user