Skip to content

Commit 00264dd

Browse files
committed
dont duplicate code
1 parent ea35923 commit 00264dd

3 files changed

Lines changed: 24 additions & 18 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
defmodule LiveDebuggerWeb.Helpers.StateHelper do
2+
@moduledoc """
3+
This module has helper functions for managing state
4+
"""
5+
alias LiveDebugger.CommonTypes
6+
alias LiveDebugger.Services.ChannelService
7+
8+
@doc """
9+
Fetches state using ChannelService when no state is passed
10+
"""
11+
@spec maybe_get_state(pid :: pid(), channel_state :: CommonTypes.channel_state() | nil) ::
12+
{:ok, CommonTypes.channel_state()} | {:error, term()}
13+
def maybe_get_state(pid, channel_state \\ nil) when is_pid(pid) do
14+
if is_nil(channel_state) do
15+
ChannelService.state(pid)
16+
else
17+
{:ok, channel_state}
18+
end
19+
end
20+
end

lib/live_debugger_web/live/sidebar_live.ex

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ defmodule LiveDebuggerWeb.SidebarLive do
1818
alias LiveDebugger.Utils.URL
1919
alias LiveDebuggerWeb.LiveComponents.NestedLiveViewsLinks
2020
alias LiveDebugger.Utils.PubSub, as: PubSubUtils
21+
alias LiveDebuggerWeb.Helpers.StateHelper
2122

2223
attr(:socket, :map, required: true)
2324
attr(:id, :string, required: true)
@@ -341,7 +342,7 @@ defmodule LiveDebuggerWeb.SidebarLive do
341342
pid = socket.assigns.lv_process.pid
342343

343344
assign_async(socket, [:tree, :max_opened_node_level], fn ->
344-
with {:ok, channel_state} <- maybe_get_state(pid, state),
345+
with {:ok, channel_state} <- StateHelper.maybe_get_state(pid, state),
345346
{:ok, tree} <- ChannelService.build_tree(channel_state) do
346347
{:ok, %{tree: tree, max_opened_node_level: Tree.max_opened_node_level(tree)}}
347348
else
@@ -380,12 +381,4 @@ defmodule LiveDebuggerWeb.SidebarLive do
380381

381382
send(state.socket.transport_pid, state.serializer.encode!(message))
382383
end
383-
384-
defp maybe_get_state(pid, channel_state) do
385-
if is_nil(channel_state) do
386-
ChannelService.state(pid)
387-
else
388-
{:ok, channel_state}
389-
end
390-
end
391384
end

lib/live_debugger_web/live/state_live.ex

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ defmodule LiveDebuggerWeb.StateLive do
1313
alias LiveDebugger.Services.ChannelService
1414
alias LiveDebugger.Utils.TermParser
1515
alias LiveDebugger.Utils.PubSub, as: PubSubUtils
16+
alias LiveDebuggerWeb.Helpers.StateHelper
1617

1718
attr(:socket, :map, required: true)
1819
attr(:id, :string, required: true)
@@ -167,7 +168,7 @@ defmodule LiveDebuggerWeb.StateLive do
167168
)
168169
when not is_nil(node_id) do
169170
assign_async(socket, [:node, :node_type], fn ->
170-
with {:ok, channel_state} <- maybe_get_state(pid, channel_state),
171+
with {:ok, channel_state} <- StateHelper.maybe_get_state(pid, channel_state),
171172
{:ok, node} <- ChannelService.get_node(channel_state, node_id),
172173
true <- not is_nil(node) do
173174
{:ok, %{node: node, node_type: TreeNode.type(node)}}
@@ -184,14 +185,6 @@ defmodule LiveDebuggerWeb.StateLive do
184185
|> assign(:node_type, AsyncResult.failed(%AsyncResult{}, :no_node_id))
185186
end
186187

187-
defp maybe_get_state(pid, channel_state) do
188-
if is_nil(channel_state) do
189-
ChannelService.state(pid)
190-
else
191-
{:ok, channel_state}
192-
end
193-
end
194-
195188
defp title(:live_component), do: "LiveComponent"
196189
defp title(:live_view), do: "LiveView"
197190

0 commit comments

Comments
 (0)