Diffuser/lib/diffuser_web/live/prompt_request_live/show.ex

44 lines
1.1 KiB
Elixir

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