From 0503fb3799dc1f94fa83944795c8bbb771fa3a46 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Thu, 2 Apr 2026 08:08:28 -0500 Subject: [PATCH] Re-enable HRRR auto-enqueue on contact detail page view --- .../live/contact_live/show.ex | 51 ++++++++----------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/lib/microwaveprop_web/live/contact_live/show.ex b/lib/microwaveprop_web/live/contact_live/show.ex index 0296ebbe..be297d1e 100644 --- a/lib/microwaveprop_web/live/contact_live/show.ex +++ b/lib/microwaveprop_web/live/contact_live/show.ex @@ -11,8 +11,8 @@ defmodule MicrowavepropWeb.ContactLive.Show do alias Microwaveprop.Terrain.ElevationClient alias Microwaveprop.Terrain.TerrainAnalysis alias Microwaveprop.Weather - # alias Microwaveprop.Weather.HrrrClient - # alias Microwaveprop.Workers.HrrrFetchWorker + alias Microwaveprop.Weather.HrrrClient + alias Microwaveprop.Workers.HrrrFetchWorker alias Microwaveprop.Workers.TerrainProfileWorker @earth_radius_m 6_371_000.0 @@ -189,34 +189,27 @@ defmodule MicrowavepropWeb.ContactLive.Show do defp maybe_enqueue_hrrr(hrrr, _contact) when not is_nil(hrrr), do: {hrrr, :loaded} - # TODO: Re-enable auto HRRR backfill on page view when appropriate - # defp maybe_enqueue_hrrr(nil, contact) do - # lat = contact.pos1 && contact.pos1["lat"] - # lon = contact.pos1 && (contact.pos1["lon"] || contact.pos1["lng"]) - # - # if lat && lon && hrrr_likely_available?(contact.qso_timestamp) do - # valid_time = HrrrClient.nearest_hrrr_hour(contact.qso_timestamp) - # {rlat, rlon} = Weather.round_to_hrrr_grid(lat, lon) - # - # Oban.insert( - # HrrrFetchWorker.new(%{ - # "lat" => rlat, - # "lon" => rlon, - # "valid_time" => DateTime.to_iso8601(valid_time) - # }) - # ) - # - # {nil, :queued} - # else - # {nil, :unavailable} - # end - # end - defp maybe_enqueue_hrrr(nil, _contact), do: {nil, :unavailable} + defp maybe_enqueue_hrrr(nil, contact) do + lat = contact.pos1 && contact.pos1["lat"] + lon = contact.pos1 && (contact.pos1["lon"] || contact.pos1["lng"]) - # defp hrrr_likely_available?(timestamp) do - # hours_ago = DateTime.diff(DateTime.utc_now(), timestamp, :hour) - # hours_ago < 48 - # end + if lat && lon do + valid_time = HrrrClient.nearest_hrrr_hour(contact.qso_timestamp) + {rlat, rlon} = Weather.round_to_hrrr_grid(lat, lon) + + Oban.insert( + HrrrFetchWorker.new(%{ + "lat" => rlat, + "lon" => rlon, + "valid_time" => DateTime.to_iso8601(valid_time) + }) + ) + + {nil, :queued} + else + {nil, :unavailable} + end + end defp load_solar(contact) do contact.qso_timestamp