|
|
@@ -2,6 +2,8 @@ defmodule VaccinsWeb.IndexLive do
|
|
|
use VaccinsWeb, :live_view
|
|
|
alias Vaccins.{LocationStore, Search}
|
|
|
|
|
|
+ @refresh_period_ms 30 * 1000
|
|
|
+
|
|
|
@impl true
|
|
|
def mount(_params, _session, socket) do
|
|
|
locations = LocationStore.get_locations()
|
|
|
@@ -15,7 +17,8 @@ defmodule VaccinsWeb.IndexLive do
|
|
|
location_cs: LocationStore.LocationRaw.changeset(%{}),
|
|
|
display_cs: false
|
|
|
)
|
|
|
- |> trigger_global_refresh}
|
|
|
+ |> trigger_global_refresh
|
|
|
+ |> trigger_periodic_refresh}
|
|
|
end
|
|
|
|
|
|
@impl true
|
|
|
@@ -38,6 +41,13 @@ defmodule VaccinsWeb.IndexLive do
|
|
|
{:noreply, socket |> assign(pending: pending |> Map.put(ref, id))}
|
|
|
end
|
|
|
|
|
|
+ def handle_info(:periodic_refresh, socket),
|
|
|
+ do:
|
|
|
+ {:noreply,
|
|
|
+ socket
|
|
|
+ |> trigger_global_refresh
|
|
|
+ |> trigger_periodic_refresh}
|
|
|
+
|
|
|
@impl true
|
|
|
def handle_info(
|
|
|
{:query_result, ref, res},
|
|
|
@@ -54,4 +64,9 @@ defmodule VaccinsWeb.IndexLive do
|
|
|
|
|
|
socket
|
|
|
end
|
|
|
+
|
|
|
+ defp trigger_periodic_refresh(socket) do
|
|
|
+ Process.send_after(self(), :periodic_refresh, @refresh_period_ms)
|
|
|
+ socket
|
|
|
+ end
|
|
|
end
|