Rocky_Mountain_Vending/app/vending-machines-[location]/page.tsx

60 lines
1.4 KiB
TypeScript

import { notFound } from "next/navigation"
import type { Metadata } from "next"
import { getAllLocationSlugs, getLocationBySlug } from "@/lib/location-data"
import {
generateLocationPageMetadata,
LocationLandingPage,
} from "@/components/location-landing-page"
interface LocationPageProps {
params: Promise<{ location: string }>
}
const NON_LOCATION_ROUTES = ["machines-we-use", "machines-for-sale"]
export const dynamic = "force-static"
export const dynamicParams = false
export async function generateStaticParams() {
const slugs = getAllLocationSlugs()
if (!slugs.length) {
return [{ location: "ogden-utah" }]
}
return slugs.map((slug) => ({ location: slug }))
}
export async function generateMetadata({
params,
}: LocationPageProps): Promise<Metadata> {
const { location } = await params
if (NON_LOCATION_ROUTES.includes(location)) {
return { title: "Page Not Found | Rocky Mountain Vending" }
}
const locationData = getLocationBySlug(location)
if (!locationData) {
return { title: "Location Not Found | Rocky Mountain Vending" }
}
return generateLocationPageMetadata(locationData)
}
export default async function LocationPage({ params }: LocationPageProps) {
const { location } = await params
if (NON_LOCATION_ROUTES.includes(location)) {
notFound()
}
const locationData = getLocationBySlug(location)
if (!locationData) {
notFound()
}
return <LocationLandingPage locationData={locationData} />
}