|
@@ -7,6 +7,7 @@ defmodule VaccinsWeb.IndexLive do
|
|
|
@impl true
|
|
@impl true
|
|
|
def mount(_params, %{"is_local?" => is_local?}, socket) do
|
|
def mount(_params, %{"is_local?" => is_local?}, socket) do
|
|
|
locations = LocationStore.get_locations()
|
|
locations = LocationStore.get_locations()
|
|
|
|
|
+ Phoenix.PubSub.subscribe(Vaccins.PubSub, "locations")
|
|
|
|
|
|
|
|
{:ok,
|
|
{:ok,
|
|
|
socket
|
|
socket
|
|
@@ -20,9 +21,7 @@ defmodule VaccinsWeb.IndexLive do
|
|
|
location_cs: LocationStore.LocationRaw.changeset(%{}),
|
|
location_cs: LocationStore.LocationRaw.changeset(%{}),
|
|
|
display_cs: false
|
|
display_cs: false
|
|
|
)
|
|
)
|
|
|
- |> set_title()
|
|
|
|
|
- |> trigger_global_refresh
|
|
|
|
|
- |> trigger_periodic_refresh}
|
|
|
|
|
|
|
+ |> set_title()}
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
defp set_title(socket = %{assigns: %{locations_with_early_slots: early}}) do
|
|
defp set_title(socket = %{assigns: %{locations_with_early_slots: early}}) do
|
|
@@ -113,6 +112,11 @@ defmodule VaccinsWeb.IndexLive do
|
|
|
{:noreply, socket}
|
|
{:noreply, socket}
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
+ def handle_info({:new_availabilities, id, res}, socket = %{assigns: %{locations: valid}}) do
|
|
|
|
|
+ send_update(VaccinsWeb.LocationComponent, id: id, availabilities: res)
|
|
|
|
|
+ {:noreply, socket}
|
|
|
|
|
+ end
|
|
|
|
|
+
|
|
|
defp trigger_global_refresh(socket = %{assigns: %{locations: locations}}) do
|
|
defp trigger_global_refresh(socket = %{assigns: %{locations: locations}}) do
|
|
|
locations
|
|
locations
|
|
|
|> Enum.each(&send_update(VaccinsWeb.LocationComponent, id: &1.id, force_refresh: true))
|
|
|> Enum.each(&send_update(VaccinsWeb.LocationComponent, id: &1.id, force_refresh: true))
|