defmodule LiveDebuggerWeb.LvProcessLive do @moduledoc """ This module is responsible for rendering the main debugger page. It can contain multiple nested live views, depending on the current view. It also contains the logic for fetching the LiveView process and its state. It uses the `LiveDebuggerWeb.Hooks.LinkedView` hook to fetch the LiveView process and its state. """ use LiveDebuggerWeb, :live_view use LiveDebuggerWeb.Hooks.LinkedView alias LiveDebuggerWeb.Helpers.RoutesHelper alias LiveDebuggerWeb.Components.Navbar alias Phoenix.LiveView.JS alias LiveDebuggerWeb.Live.Nested.StateLive alias LiveDebuggerWeb.Live.Nested.NodeInspectorSidebarLive alias LiveDebugger.Utils.PubSub, as: PubSubUtils alias LiveDebuggerWeb.Components.NavigationMenu alias LiveDebuggerWeb.Live.Traces.NodeTracesLive alias LiveDebuggerWeb.Live.Traces.ProcessTracesLive @impl true def handle_params(params, _url, socket) do self() |> PubSubUtils.params_changed_topic() |> PubSubUtils.broadcast({:params_changed, params}) {:noreply, assign(socket, :params, params)} end @impl true def render(assigns) do ~H"""
<.async_result :let={lv_process} assign={@lv_process}> <:loading>
<.spinner size="xl" />
""" end @impl true def handle_event("find-successor", _, socket) do send(self(), :find_successor) {:noreply, socket} end attr(:socket, :map, required: true) attr(:lv_process, :map, required: true) attr(:url, :string, required: true) attr(:params, :map, required: true) defp node_inspector(assigns) do ~H"""
""" end defp global_traces(assigns) do ~H""" """ end defp get_return_link(lv_process, in_iframe?) do cond do not in_iframe? -> RoutesHelper.live_views_dashboard() in_iframe? -> RoutesHelper.window_dashboard(lv_process.transport_pid) end end defp get_open_sidebar_js(live_action) do case live_action do :node_inspector -> JS.push("open-sidebar", target: "#sidebar") :global_traces -> JS.push("open-sidebar", target: "#global-traces") end end end