--- import ActivityCard from "../../../components/ActivityCard.astro"; import Layout from "../../../layouts/Layout.astro"; import { api, plural, type Activity, type DictionaryItem, type PaginatedActivity } from "../../../lib/api"; const { slug, fish: fishSlug } = Astro.params; let water: DictionaryItem | undefined, fish: DictionaryItem | undefined, items: Activity[] = [], unavailable = false; try { const [waters, fishes] = await Promise.all([api("/api/v1/waterbodies?limit=500"), api("/api/v1/fishes?limit=500")]); water = waters.find(item => item.slug === slug); fish = fishes.find(item => item.slug === fishSlug); if (water && fish) { const paginated = await api(`/api/v1/activity?hours=72&waterbody=${encodeURIComponent(water.slug)}&fish=${encodeURIComponent(fish.slug)}&limit=100`); items = paginated.items; } } catch { unavailable = true; } if (unavailable) { Astro.response.status = 503; Astro.response.headers.set("Retry-After", "60"); Astro.response.headers.set("Cache-Control", "no-store"); } if ((!water || !fish) && !unavailable) Astro.response.status = 404; const valid = Boolean(water && fish); const schema = valid ? { "@type":"CollectionPage", name:`${fish!.name_ru} на ${water!.name_ru} в RF4`, url:`https://rf4spotter.ru/waterbodies/${water!.slug}/${fish!.slug}` } : null; --- ← К водоёму
{water?.name_ru ?? "Каталог RF4"}

{fish?.name_ru ?? "Данные не найдены"}

{valid &&

{items.length} {plural(items.length,["свежая точка","свежие точки","свежих точек"])} за последние 72 часа.

}
{unavailable ?

Данные временно недоступны

: !valid ?

Такого сочетания нет в справочнике

Вернуться на главную
:
{items.length ? items.map(item => ) :

Свежих точек пока нет

Данные появятся после новых подтверждённых наблюдений.

}
}