defmodule DiffuserWeb.PromptRequestLive.Show do use DiffuserWeb, :live_view import Ecto.Query alias Diffuser.Generator alias Diffuser.Generator.{Image, PromptRequest} alias Diffuser.Repo alias Phoenix.Socket.Broadcast alias DiffuserWeb.Endpoint @impl true def mount(%{"id" => id}, _session, socket) do Endpoint.subscribe("request:#{id}") {:ok, socket |> assign(:prompt_request, Generator.get_prompt_request!(id))} end @impl true def handle_params(%{"id" => id}, _, socket) do {:noreply, socket |> assign(:page_title, page_title(socket.assigns.live_action)) |> assign(:prompt_request, Generator.get_prompt_request!(id))} end defp page_title(:show), do: "Show Prompt request" defp page_title(:edit), do: "Edit Prompt request" @impl true def handle_info( %Broadcast{ topic: _, event: "request", payload: %{prompt_request: %PromptRequest{} = prompt_request} }, socket ), do: {:noreply, assign(socket, %{ prompt_request: prompt_request })} end