fix: show night icons for hourly forecast
All checks were successful
CI / Lint, typecheck and build (push) Successful in 10m2s

This commit is contained in:
zv
2026-06-13 21:27:41 +02:00
parent 83c0657296
commit 5a8e39dbe2
4 changed files with 58 additions and 35 deletions

View File

@@ -1,7 +1,7 @@
import type { Language, TranslationKey } from "@/lib/i18n";
import { translate } from "@/lib/i18n";
import { DEFAULT_TEMPERATURE_UNIT, DEFAULT_WIND_SPEED_UNIT, formatTemperature, formatWindSpeed } from "@/lib/weather-utils";
import type { HourlyForecast } from "@/types/forecast";
import type { DailyForecast, HourlyForecast } from "@/types/forecast";
import type { TemperatureUnit, WindSpeedUnit } from "@/types/units";
export function getForecastConditionKey(code: number | null): TranslationKey {
@@ -89,6 +89,23 @@ export function getHourlyForecastForDay(hours: HourlyForecast[], date: string) {
return hours.filter((hour) => hour.time.startsWith(`${date}T`));
}
export function getDailyForecastForHour(days: DailyForecast[], time: string) {
return days.find((day) => time.startsWith(`${day.date}T`)) ?? null;
}
export function isForecastNight(time: string, day: Pick<DailyForecast, "sunrise" | "sunset"> | null | undefined) {
const hourTimestamp = parseForecastHour(time);
const sunriseTimestamp = day?.sunrise ? parseForecastHour(day.sunrise) : null;
const sunsetTimestamp = day?.sunset ? parseForecastHour(day.sunset) : null;
if (hourTimestamp !== null && sunriseTimestamp !== null && sunsetTimestamp !== null) {
return hourTimestamp < sunriseTimestamp || hourTimestamp >= sunsetTimestamp;
}
const hour = getForecastHourOfDay(time);
return hour !== null && (hour < 6 || hour >= 21);
}
export function isForecastHourPast(time: string) {
const currentHour = getWarsawForecastHour();
const hourTimestamp = parseForecastHour(time);