import type { Dish, Extra, Settings } from '~/server/utils/store' // Carte + réglages du resto, partagés par toutes les pages client. // Rafraîchis toutes les 10 s pour refléter les changements faits dans le dashboard (rupture, pause…). export function useShop(opts: { poll?: boolean } = {}) { const menu = useFetch<{ dishes: Dish[], extras: Extra[] }>('/api/menu', { key: 'menu', default: () => ({ dishes: [], extras: [] }) }) const settings = useFetch('/api/settings', { key: 'settings' }) if (import.meta.client && opts.poll) { const t = setInterval(() => { menu.refresh(); settings.refresh() }, 10000) onScopeDispose(() => clearInterval(t)) } const dishes = computed(() => menu.data.value?.dishes || []) const extras = computed(() => menu.data.value?.extras || []) const open = computed(() => settings.data.value?.open ?? true) const wait = computed(() => settings.data.value?.wait ?? 20) return { dishes, extras, settings: settings.data, open, wait } } export const priceOf = (d: Dish, s: 'L' | 'XL') => d.prices[s] export const sizesOf = (d: Dish) => (['L', 'XL'] as const).filter(s => s in d.prices) export const orderable = (d: Dish) => d.available && sizesOf(d).some(s => d.prices[s] != null)