diff --git a/lib/microwaveprop_web/live/contact_live/show.ex b/lib/microwaveprop_web/live/contact_live/show.ex index deb66b85..b0abd78f 100644 --- a/lib/microwaveprop_web/live/contact_live/show.ex +++ b/lib/microwaveprop_web/live/contact_live/show.ex @@ -278,25 +278,26 @@ defmodule MicrowavepropWeb.ContactLive.Show do end end - defp maybe_enqueue_terrain(_terrain, %{terrain_status: :complete} = contact), do: contact - defp maybe_enqueue_terrain(terrain, contact) when not is_nil(terrain) do - Radio.set_enrichment_status!([contact.id], :terrain_status, :complete) + if contact.terrain_status != :complete do + Radio.set_enrichment_status!([contact.id], :terrain_status, :complete) + end + %{contact | terrain_status: :complete} end defp maybe_enqueue_terrain(nil, contact) do - if contact.pos1 && contact.pos2 && contact.terrain_status in [:pending, :failed, :queued] do - Oban.insert(TerrainProfileWorker.new(%{"contact_id" => contact.id})) - Radio.set_enrichment_status!([contact.id], :terrain_status, :queued) - %{contact | terrain_status: :queued} - else - if is_nil(contact.pos1) or is_nil(contact.pos2) do - Radio.set_enrichment_status!([contact.id], :terrain_status, :unavailable) + cond do + contact.pos1 && contact.pos2 && contact.terrain_status not in [:queued, :unavailable] -> + Oban.insert(TerrainProfileWorker.new(%{"contact_id" => contact.id})) + Radio.set_enrichment_status!([contact.id], :terrain_status, :queued) + %{contact | terrain_status: :queued} + + is_nil(contact.pos1) or is_nil(contact.pos2) -> %{contact | terrain_status: :unavailable} - else + + true -> contact - end end end