--- import Layout from "../../layouts/Layout.astro"; import PageHero from "../../components/PageHero.astro"; import StatePanel from "../../components/StatePanel.astro"; import WaterbodyMark from "../../components/WaterbodyMark.astro"; import Pagination from "../../components/Pagination.astro"; import { api, type DictionaryItem } from "../../lib/api"; const params = Astro.url.searchParams; const pageLimit = 48; const requestedOffset = Number(params.get("offset") ?? 0); let offset = Number.isInteger(requestedOffset) && requestedOffset >= 0 ? requestedOffset : 0; let waters: DictionaryItem[] = [], allWaters: DictionaryItem[] = [], unavailable = false; try { allWaters = await api("/api/v1/waterbodies?limit=500"); if (allWaters.length > 0 && offset >= allWaters.length) offset = Math.floor((allWaters.length - 1) / pageLimit) * pageLimit; waters = allWaters.slice(offset, offset + pageLimit); } catch { unavailable = true; } if (unavailable) { Astro.response.status = 503; Astro.response.headers.set("Retry-After", "60"); Astro.response.headers.set("Cache-Control", "no-store"); } --- {unavailable ? : } {!unavailable && }