This commit is contained in:
2024-03-30 12:16:46 +01:00
parent 5e6035ac46
commit 7db75018b0

View File

@ -14,12 +14,15 @@ defmodule WebmonWeb.WebsiteLive.Index do
for website <- websites, do: monitor_website(website) for website <- websites, do: monitor_website(website)
end end
{:ok, stream(socket, :websites, websites)} {:ok,
socket
|> assign(:deleted, [])
|> stream(:websites, websites)}
end end
def monitor_website(website) do def monitor_website(website) do
me = self() me = self()
Engine.start_link(website, on_update: fn website -> send me, {:update, website} end) Engine.start_link(website, on_update: fn website -> send(me, {:update, website}) end)
end end
@impl true @impl true
@ -45,6 +48,15 @@ defmodule WebmonWeb.WebsiteLive.Index do
|> assign(:website, nil) |> assign(:website, nil)
end end
@impl true
def handle_info({:update, website}, %{deleted: deleted_website} = socket) do
{:noreply,
unless(website.id in deleted_website,
do: stream_insert(socket, :websites, website),
else: socket
)}
end
@impl true @impl true
def handle_info({:update, website}, socket) do def handle_info({:update, website}, socket) do
{:noreply, stream_insert(socket, :websites, website)} {:noreply, stream_insert(socket, :websites, website)}
@ -71,9 +83,11 @@ defmodule WebmonWeb.WebsiteLive.Index do
end end
def website_status(%{website: %{status: {:ok, code, ping}}} = assigns) do def website_status(%{website: %{status: {:ok, code, ping}}} = assigns) do
assigns = assigns assigns =
assigns
|> assign(:ping, ping) |> assign(:ping, ping)
|> assign(:code, code) |> assign(:code, code)
~H""" ~H"""
<span class=""><%= @ping %></span> <span class=""><%= @ping %></span>
""" """
@ -84,5 +98,4 @@ defmodule WebmonWeb.WebsiteLive.Index do
<span class="text-red">&mdash;</span> <span class="text-red">&mdash;</span>
""" """
end end
end end