fix(menu-app): crash when tagline/hours fields are null

The API now always sends restaurant.tagline/blurb as {en, gr} objects,
including when a site hasn't set them yet (both null). The old
`?? r.tagline` fallback rendered the whole object as a React child in
that case (React error #31) instead of falling back to a display
string. Fall back to the localized fallback string instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 10:22:43 +03:00
parent d87540e08f
commit f5736b85cb

View File

@@ -12,7 +12,7 @@ import {
eur, discountedPrice, discountPct, eur, discountedPrice, discountPct,
} from '../components/primitives' } from '../components/primitives'
// TODO: Replace with real data from API once backend includes restaurant info // Used when a site hasn't configured a field yet (API sends nulls until set in sysadmin)
const RESTAURANT_FALLBACK = { const RESTAURANT_FALLBACK = {
name: 'Our Menu', name: 'Our Menu',
tagline: { en: 'Kitchen & Bar', gr: 'Κουζίνα & Μπαρ' }, tagline: { en: 'Kitchen & Bar', gr: 'Κουζίνα & Μπαρ' },
@@ -160,7 +160,7 @@ function Hero({ lang, setLang, restaurant }) {
</h1> </h1>
)} )}
<div className="mt-1.5 font-sans text-[14px] font-medium uppercase tracking-[0.18em] text-[#9caf88]"> <div className="mt-1.5 font-sans text-[14px] font-medium uppercase tracking-[0.18em] text-[#9caf88]">
{r.tagline?.[lang] ?? r.tagline ?? ''} {r.tagline?.[lang] || RESTAURANT_FALLBACK.tagline[lang] || ''}
</div> </div>
{/* Ornament */} {/* Ornament */}
@@ -171,7 +171,7 @@ function Hero({ lang, setLang, restaurant }) {
</div> </div>
<p className="mx-auto max-w-[300px] text-[13px] leading-relaxed text-[#7d7660]"> <p className="mx-auto max-w-[300px] text-[13px] leading-relaxed text-[#7d7660]">
{r.blurb?.[lang] ?? r.blurb ?? ''} {r.blurb?.[lang] || RESTAURANT_FALLBACK.blurb[lang] || ''}
</p> </p>
{r.hours?.[lang] && ( {r.hours?.[lang] && (