fix: treat empty IMGW warning products as no warnings

This commit is contained in:
zv
2026-06-12 21:51:44 +02:00
parent 1ff76cf847
commit 3309e03acb
5 changed files with 31 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
import { normalizeWarning } from "@/lib/weather-utils";
import { isImgwNoProductsResponse, readImgwResponseBody } from "@/lib/imgw-empty-response";
import type { RawWarning, WeatherWarning } from "@/types/imgw";
const IMGW_WARNINGS_METEO_URL = "https://danepubliczne.imgw.pl/api/data/warningsmeteo";
@@ -11,8 +12,9 @@ export async function fetchMeteoWarnings(signal?: AbortSignal): Promise<WeatherW
signal,
});
if (!response.ok) {
const details = await response.text().catch(() => "");
throw new Error(`Unable to load IMGW meteorological warnings: ${response.status}${details ? ` ${details.slice(0, 240)}` : ""}`);
const details = await readImgwResponseBody(response);
if (response.status === 404 && isImgwNoProductsResponse(details.json)) return [];
throw new Error(`Unable to load IMGW meteorological warnings: ${response.status}${details.text ? ` ${details.text.slice(0, 240)}` : ""}`);
}
const rows = await response.json() as RawWarning[];
return Array.isArray(rows) ? rows.map((warning, index) => normalizeWarning(warning, "meteo", index)) : [];