diff --git a/web/koja/src/app/[locale]/cafe/[slug]/page.tsx b/web/koja/src/app/[locale]/cafe/[slug]/page.tsx index a3a3542..4bd2038 100644 --- a/web/koja/src/app/[locale]/cafe/[slug]/page.tsx +++ b/web/koja/src/app/[locale]/cafe/[slug]/page.tsx @@ -70,16 +70,29 @@ export default async function CafePage({ const t = await getTranslations({ locale, namespace: "cafe" }); const isFa = locale === "fa"; - const [cafe, menu, reviews] = await Promise.all([ - getCafe(slug), + // Resolve the café first so an unknown slug 404s cleanly instead of doing + // (and potentially erroring on) the menu/review fetches. + const cafe = await getCafe(slug); + if (!cafe) notFound(); + + const [menu, reviews] = await Promise.all([ getCafeMenu(slug), getCafeReviews(slug), ]); - if (!cafe) notFound(); - const name = isFa ? cafe.name : (cafe.nameEn ?? cafe.name); - const profile = cafe.discoverProfile; + // discoverProfile may be absent for cafés that never filled it in — fall back + // to an empty profile so the page renders instead of throwing a 500. + const profile = cafe.discoverProfile ?? { + themes: [], + size: null, + floors: null, + vibes: [], + occasions: [], + spaceFeatures: [], + noiseLevel: null, + priceTier: null, + }; const priceTier = profile.priceTier; // Similar cafes diff --git a/web/koja/src/components/cafe/cafe-card.tsx b/web/koja/src/components/cafe/cafe-card.tsx index 7063517..8ff568f 100644 --- a/web/koja/src/components/cafe/cafe-card.tsx +++ b/web/koja/src/components/cafe/cafe-card.tsx @@ -11,7 +11,8 @@ interface Props { export function CafeCard({ cafe, locale, href }: Props) { const isFa = locale === "fa"; const name = isFa ? cafe.name : (cafe.name); - const priceTier = cafe.discoverProfile.priceTier; + const priceTier = cafe.discoverProfile?.priceTier ?? null; + const themes = cafe.discoverProfile?.themes ?? []; const priceLabel = priceTier ? (PRICE_TIER_LABELS[priceTier]?.[isFa ? "fa" : "en"] ?? priceTier) : null; return ( @@ -72,9 +73,9 @@ export function CafeCard({ cafe, locale, href }: Props) { )} {/* Tags */} - {cafe.discoverProfile.themes.length > 0 && ( + {themes.length > 0 && (