chore: converted scripts and templates to live components

This commit is contained in:
2026-05-03 10:00:22 +02:00
parent 8d7e7419d4
commit 0075f25ef7
10 changed files with 671 additions and 564 deletions

View File

@@ -11,13 +11,14 @@ defmodule BDS.Desktop.ShellLive do
alias BDS.Desktop.ShellLive.{
ChatEditor,
CodeEntityEditor,
ImportEditor,
MediaEditor,
MenuEditor,
MiscEditor,
ScriptEditor,
SettingsEditor,
TagsEditor
TagsEditor,
TemplateEditor
}
alias BDS.Desktop.ShellLive.OverlayComponents, as: ShellOverlayComponents
@@ -175,8 +176,6 @@ defmodule BDS.Desktop.ShellLive do
|> assign(:media_editor_post_picker_queries, %{})
|> assign(:media_editor_save_states, %{})
|> assign(:media_editor_translation_forms, %{})
|> assign(:script_editor_drafts, %{})
|> assign(:template_editor_drafts, %{})
|> assign(:chat_editor_inputs, %{})
|> assign(:chat_model_selectors_open, %{})
|> assign(:chat_editor_requests, %{})
@@ -527,53 +526,6 @@ defmodule BDS.Desktop.ShellLive do
{:noreply, apply_shell_command(socket, action)}
end
def handle_event("change_script_editor", %{"script_editor" => params}, socket) do
{:noreply, CodeEntityEditor.update_script(socket, params, &reload_shell/2)}
end
def handle_event("save_script_editor", _params, socket) do
{:noreply, CodeEntityEditor.save_script(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("publish_script_editor", %{"id" => _script_id}, socket) do
{:noreply,
CodeEntityEditor.publish_script(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("run_script_editor", _params, socket) do
{:noreply, CodeEntityEditor.run_script(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("check_script_editor", _params, socket) do
{:noreply, CodeEntityEditor.check_script(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("delete_script_editor", _params, socket) do
{:noreply, CodeEntityEditor.delete_script(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("change_template_editor", %{"template_editor" => params}, socket) do
{:noreply, CodeEntityEditor.update_template(socket, params, &reload_shell/2)}
end
def handle_event("save_template_editor", _params, socket) do
{:noreply, CodeEntityEditor.save_template(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("publish_template_editor", %{"id" => _template_id}, socket) do
{:noreply,
CodeEntityEditor.publish_template(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("validate_template_editor", _params, socket) do
{:noreply,
CodeEntityEditor.validate_template(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("delete_template_editor", _params, socket) do
{:noreply, CodeEntityEditor.delete_template(socket, &reload_shell/2, &append_output_entry/5)}
end
def handle_event("change_chat_editor_input", %{"message" => message}, socket) do
{:noreply, ChatEditor.update_input(socket, message, &reload_shell/2)}
end
@@ -1312,6 +1264,22 @@ defmodule BDS.Desktop.ShellLive do
{:noreply, append_output_entry(socket, title, message, nil, level)}
end
def handle_info({:script_editor_output, title, message, level}, socket) do
{:noreply, append_output_entry(socket, title, message, nil, level)}
end
def handle_info({:template_editor_output, title, message, level}, socket) do
{:noreply, append_output_entry(socket, title, message, nil, level)}
end
def handle_info(:reload_shell, socket) do
{:noreply, reload_shell(socket, socket.assigns.workbench)}
end
def handle_info({:close_tab, type, id}, socket) do
{:noreply, reload_shell(socket, BDS.UI.Workbench.close_tab(socket.assigns.workbench, type, id))}
end
@impl true
def render(assigns) do
UILocale.put(assigns.page_language)
@@ -1382,7 +1350,6 @@ defmodule BDS.Desktop.ShellLive do
|> assign(:current_tab, current_tab(workbench))
|> assign_post_editor()
|> assign_media_editor()
|> assign_code_entity_editor()
|> assign_chat_editor()
|> assign_import_editor()
|> assign_misc_editor()
@@ -1435,10 +1402,6 @@ defmodule BDS.Desktop.ShellLive do
MediaEditor.assign_socket(socket)
end
defp assign_code_entity_editor(socket) do
CodeEntityEditor.assign_socket(socket)
end
defp assign_chat_editor(socket) do
ChatEditor.assign_socket(socket)
end
@@ -1621,12 +1584,14 @@ defmodule BDS.Desktop.ShellLive do
socket
end
defp save_current_tab(%{assigns: %{current_tab: %{type: :scripts}}} = socket) do
CodeEntityEditor.save_script(socket, &reload_shell/2, &append_output_entry/5)
defp save_current_tab(%{assigns: %{current_tab: %{type: :scripts, id: script_id}}} = socket) do
send_update(ScriptEditor, id: "script-editor-#{script_id}", action: :save)
socket
end
defp save_current_tab(%{assigns: %{current_tab: %{type: :templates}}} = socket) do
CodeEntityEditor.save_template(socket, &reload_shell/2, &append_output_entry/5)
defp save_current_tab(%{assigns: %{current_tab: %{type: :templates, id: template_id}}} = socket) do
send_update(TemplateEditor, id: "template-editor-#{template_id}", action: :save)
socket
end
defp save_current_tab(socket), do: reload_shell(socket, socket.assigns.workbench)
@@ -1729,7 +1694,6 @@ defmodule BDS.Desktop.ShellLive do
socket
|> assign(:shell_overlay, nil)
|> assign(:tab_meta, Map.delete(socket.assigns.tab_meta, {:scripts, script_id}))
|> assign(:script_editor_drafts, Map.delete(socket.assigns.script_editor_drafts, script_id))
|> reload_shell(workbench)
{:error, reason} ->
@@ -1748,10 +1712,6 @@ defmodule BDS.Desktop.ShellLive do
socket
|> assign(:shell_overlay, nil)
|> assign(:tab_meta, Map.delete(socket.assigns.tab_meta, {:templates, template_id}))
|> assign(
:template_editor_drafts,
Map.delete(socket.assigns.template_editor_drafts, template_id)
)
|> reload_shell(workbench)
{:error, reason} ->