From 7db75018b0bf65159d5f19418bac2601dac8ae3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Diedrich?= Date: Sat, 30 Mar 2024 12:16:46 +0100 Subject: [PATCH] patch --- lib/webmon_web/live/website_live/index.ex | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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