import dynamicImport from "next/dynamic";
import { notFound } from "next/navigation";
import FacilitySearch from "@/app/FacilitySearch";
import {
type FacilityRecord,
enrichFacilities,
filterFacilitiesByArea,
getAvailablePlaceConfigs,
getPlaceConfigFromSlug,
} from "@/app/facilityData";
import { API_URL } from "@/config/constants";
const PlaceMap = dynamicImport(() => import("@/components/PlaceMap"), {
ssr: false,
loading: () => (
),
});
export const dynamicParams = true;
export const dynamic = "force-dynamic";
export async function generateStaticParams() {
return getAvailablePlaceConfigs().map((slug) => ({ slug }));
}
export default async function PlacePage({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params;
const place = getPlaceConfigFromSlug(slug);
if (!place) {
notFound();
}
let facilities: FacilityRecord[] = [];
try {
const res = await fetch(`${API_URL}/facilities`, {
next: { revalidate: 0 },
cache: "no-store",
});
if (!res.ok) {
throw new Error(`API returnerte status ${res.status}`);
}
facilities = await res.json();
} catch (error) {
console.error("Kritisk feil ved henting av sted-data:", error);
facilities = [];
}
const safeData = Array.isArray(facilities) ? facilities : [];
const facilitiesInPlace = filterFacilitiesByArea(enrichFacilities(safeData), place.areaFilter);
return (
Steder
{place.title}
{place.intro}
{facilitiesInPlace.length} anlegg
Kart og liste i samme visning
);
}