import Blocks from "@/components/blocks";
import {
fetchSanityPageBySlug,
fetchSanityPosts,
fetchSanityServices,
fetchSanityVenues,
} from "@/sanity/lib/fetch";
import { generatePageMetadata } from "@/sanity/lib/metadata";
import { HomepageView } from "@/components/templates";
import {
getDynamicFetchOptions,
sanityFetchMetadata,
type DynamicFetchOptions,
} from "@/sanity/lib/live";
import { PAGE_QUERY_RESULT } from "@/sanity.types";
import { PAGE_QUERY } from "@/sanity/queries/page";
import { draftMode } from "next/headers";
import { Suspense } from "react";
function PageFallback() {
return (
);
}
export async function generateMetadata() {
try {
const { perspective } = await getDynamicFetchOptions();
const { data: page } = (await sanityFetchMetadata({
query: PAGE_QUERY,
params: { slug: "index" },
perspective,
})) as { data: PAGE_QUERY_RESULT };
if (page) {
return generatePageMetadata({ page, slug: "index" });
}
} catch (err) {
// Ignore when offline or unconfigured
}
return {
title: "Vietnam Wedding Guide | Bespoke Destination Weddings & Editorial Guides",
description:
"The premier independent publication and private advisory for bespoke destination weddings across Vietnam.",
};
}
export default async function IndexPage() {
const { isEnabled: isDraftMode } = await draftMode();
if (isDraftMode) {
return (
}>
);
}
return ;
}
async function DynamicIndexPage() {
const { perspective, stega } = await getDynamicFetchOptions();
return ;
}
async function CachedIndexPage({ perspective, stega }: DynamicFetchOptions) {
const [page, posts, services, venues] = await Promise.all([
fetchSanityPageBySlug({
slug: "index",
perspective,
stega,
}).catch(() => null),
fetchSanityPosts({
perspective,
stega,
}).catch(() => []),
fetchSanityServices({
perspective,
stega,
}).catch(() => []),
fetchSanityVenues({
perspective,
stega,
}).catch(() => []),
]);
if (page?.blocks && page.blocks.length > 0) {
return (
);
}
return (
);
}