defmodule VaccinsWeb.IndexLive do use VaccinsWeb, :live_view alias Vaccins.{Queries, Search} @impl true def mount(_params, _session, socket) do queries = Queries.get_locations() {:ok, socket |> assign( locations: queries, pending: %{}, availabilities: queries |> Map.new(&{&1.id, []}) )} end @impl true def handle_event( "trigger_query", %{"id" => query_id}, socket = %{assigns: %{locations: valid, pending: pending}} ) do query = valid |> Enum.find(&(&1.id == query_id)) ref = Search.async_trigger_query(query) {:noreply, socket |> assign(pending: pending |> Map.put(ref, query_id))} end @impl true def handle_info( {:query_result, ref, res}, socket = %{assigns: %{locations: valid, pending: pending}} ) do query = pending |> Map.get(ref) |> IO.inspect() res |> IO.inspect() {:noreply, socket |> assign(pending: pending |> Map.delete(ref))} end defp render_query(q) do ~E"""
id
<%= q.id %>
booking page
<%= link q.booking_page, to: q.booking_page %>
Availabilities
test availability
""" end end