diff --git a/lib/webmon_web/live/website_live/index.ex b/lib/webmon_web/live/website_live/index.ex
index 9101104..6527787 100644
--- a/lib/webmon_web/live/website_live/index.ex
+++ b/lib/webmon_web/live/website_live/index.ex
@@ -14,12 +14,15 @@ defmodule WebmonWeb.WebsiteLive.Index do
for website <- websites, do: monitor_website(website)
end
- {:ok, stream(socket, :websites, websites)}
+ {:ok,
+ socket
+ |> assign(:deleted, [])
+ |> stream(:websites, websites)}
end
def monitor_website(website) do
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
@impl true
@@ -45,6 +48,15 @@ defmodule WebmonWeb.WebsiteLive.Index do
|> assign(:website, nil)
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
def handle_info({:update, website}, socket) do
{:noreply, stream_insert(socket, :websites, website)}
@@ -71,9 +83,11 @@ defmodule WebmonWeb.WebsiteLive.Index do
end
def website_status(%{website: %{status: {:ok, code, ping}}} = assigns) do
- assigns = assigns
+ assigns =
+ assigns
|> assign(:ping, ping)
|> assign(:code, code)
+
~H"""
<%= @ping %>
"""
@@ -84,5 +98,4 @@ defmodule WebmonWeb.WebsiteLive.Index do
—
"""
end
-
end