chore: refactored areas around to_existing_atom/1 uses

This commit is contained in:
2026-05-01 17:25:59 +02:00
parent 3505355980
commit 07ce5f8b4d
16 changed files with 1150 additions and 373 deletions

View File

@@ -1,6 +1,7 @@
defmodule BDS.UI.Session do
@moduledoc false
alias BDS.BoundedAtoms
alias BDS.UI.Workbench
def serialize(state) do
@@ -32,18 +33,19 @@ defmodule BDS.UI.Session do
Workbench.new(
sidebar_visible: Map.get(payload, "sidebar_visible", true),
sidebar_width: Map.get(payload, "sidebar_width", 280),
active_view: atomize(Map.get(payload, "active_view"), :posts),
active_view: BoundedAtoms.sidebar_view(Map.get(payload, "active_view"), :posts),
assistant_sidebar_visible: Map.get(payload, "assistant_sidebar_visible", false),
assistant_sidebar_width: Map.get(payload, "assistant_sidebar_width", 360),
panel_visible: get_in(payload, ["panel", "visible"]) || false,
panel_tab: atomize(get_in(payload, ["panel", "active_tab"]) || "tasks", :tasks),
panel_tab:
BoundedAtoms.panel_tab(get_in(payload, ["panel", "active_tab"]) || "tasks", :tasks),
dirty_tabs: Enum.map(Map.get(payload, "dirty_tabs", []), &decode_tab_ref/1)
)
tabs =
Enum.map(Map.get(payload, "tabs", []), fn tab ->
%{
type: atomize(Map.get(tab, "type", "post"), :post),
type: BoundedAtoms.editor_route(Map.get(tab, "type", "post"), :post),
id: Map.get(tab, "id"),
is_transient: Map.get(tab, "is_transient", false)
}
@@ -58,15 +60,9 @@ defmodule BDS.UI.Session do
defp encode_tab_ref({type, id}), do: %{"type" => Atom.to_string(type), "id" => id}
defp decode_tab_ref(nil), do: nil
defp decode_tab_ref(%{"type" => type, "id" => id}), do: {atomize(type, :post), id}
defp atomize(value, _fallback) when is_atom(value), do: value
defp atomize(value, fallback) when is_binary(value) do
String.to_existing_atom(value)
rescue
ArgumentError -> fallback
end
defp decode_tab_ref(%{"type" => type, "id" => id}),
do: {BoundedAtoms.editor_route(type, :post), id}
defp active_route(nil), do: :dashboard
defp active_route({type, _id}), do: type