defmodule LiveDebuggerWeb.Live.Traces.ProcessTracesLive do use LiveDebuggerWeb, :live_view alias LiveDebuggerWeb.Live.Traces.Components alias LiveDebuggerWeb.Live.Traces.Helpers alias LiveDebuggerWeb.Live.Traces.Hooks @page_size 25 @live_stream_limit 128 attr(:socket, :map, required: true) attr(:id, :string, required: true) attr(:lv_process, :map, required: true) attr(:params, :map, required: true) attr(:class, :string, default: "", doc: "CSS class for the container") def live_render(assigns) do session = %{ "lv_process" => assigns.lv_process, "id" => assigns.id, "params" => assigns.params, "parent_pid" => self() } assigns = assign(assigns, session: session) ~H""" <%= live_render(@socket, __MODULE__, id: @id, session: @session, container: {:div, class: @class} ) %> """ end @impl true def mount(_params, session, socket) do socket |> assign(:id, session["id"]) |> assign(:parent_pid, session["parent_pid"]) |> assign(:lv_process, session["lv_process"]) |> stream(:existing_traces, [], reset: true) |> assign(:existing_traces_status, :loading) |> assign(:tracing_started?, false) |> assign(:trace_callback_running?, false) |> assign(:traces_empty?, true) |> assign(:displayed_trace, nil) |> assign(:traces_continuation, nil) |> assign(:sidebar_hidden?, true) |> Helpers.assign_default_filters() |> Helpers.assign_current_filters() |> Components.LoadMoreButton.init() |> Hooks.TracingFuse.init() |> Hooks.ExistingTraces.init(@page_size) |> Hooks.NewTraces.init(@live_stream_limit) |> Components.RefreshButton.init() |> Components.ClearButton.init() |> Components.ToggleTracingButton.init() |> Components.Trace.init() |> Components.Stream.init() |> Components.FiltersSidebar.init() |> ok() end @impl true def render(assigns) do ~H"""