Prefer forecast hi lo for current weather

This commit is contained in:
Jacob Dubin
2026-05-16 10:01:40 -05:00
parent f9b728c2a0
commit 393c34055d
2 changed files with 57 additions and 31 deletions

View File

@@ -173,25 +173,22 @@ public sealed class OpenWeatherReportProvider(
var temperature = TryReadInt(main, "temp");
var high = TryReadInt(main, "temp_max");
var low = TryReadInt(main, "temp_min");
if (ShouldEnrichCurrentDayHighLow(temperature, high, low))
try
{
try
var enrichedBand = await TryResolveCurrentDayHighLowFromForecastAsync(
location,
useCelsius,
cancellationToken);
if (enrichedBand is not null)
{
var enrichedBand = await TryResolveCurrentDayHighLowFromForecastAsync(
location,
useCelsius,
cancellationToken);
if (enrichedBand is not null)
{
high = enrichedBand.Value.High ?? high;
low = enrichedBand.Value.Low ?? low;
}
}
catch (Exception exception) when (!cancellationToken.IsCancellationRequested)
{
logger.LogDebug(exception, "OpenWeather forecast enrichment failed for current-day Hi/Lo.");
high = enrichedBand.Value.High ?? high;
low = enrichedBand.Value.Low ?? low;
}
}
catch (Exception exception) when (!cancellationToken.IsCancellationRequested)
{
logger.LogDebug(exception, "OpenWeather forecast enrichment failed for current-day Hi/Lo.");
}
if (temperature is null && high is null && low is null)
{
@@ -492,21 +489,6 @@ public sealed class OpenWeatherReportProvider(
return null;
}
private static bool ShouldEnrichCurrentDayHighLow(int? temperature, int? high, int? low)
{
if (high is null || low is null)
{
return true;
}
if (high.Value != low.Value)
{
return false;
}
return temperature is null || high.Value == temperature.Value;
}
private static string BuildWeatherCacheKey(LocationPoint location, bool useCelsius, int forecastDayOffset)
{
return string.Create(