浏览代码

Trigger periodic refresh

theenglishway (time) 4 年之前
父节点
当前提交
83b1a12e39
共有 1 个文件被更改,包括 16 次插入1 次删除
  1. 16 1
      lib/vaccins_web/live/index.ex

+ 16 - 1
lib/vaccins_web/live/index.ex

@@ -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