chore: added more @spec
This commit is contained in:
@@ -7,6 +7,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
||||
alias BDS.Desktop.ShellData
|
||||
alias BDS.Desktop.ShellLive.SettingsEditor.EditorSettings
|
||||
|
||||
@spec ai_form(term()) :: term()
|
||||
def ai_form(assigns) do
|
||||
{:ok, online_endpoint} = AI.get_endpoint(:online)
|
||||
{:ok, airplane_endpoint} = AI.get_endpoint(:airplane)
|
||||
@@ -30,18 +31,21 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
||||
}
|
||||
end
|
||||
|
||||
@spec endpoint_model_options(term(), term()) :: term()
|
||||
def endpoint_model_options(assigns, endpoint_key) do
|
||||
assigns
|
||||
|> Map.get(:settings_editor_endpoint_models, %{})
|
||||
|> Map.get(endpoint_key, [])
|
||||
end
|
||||
|
||||
@spec update_ai_draft(term(), term(), term()) :: term()
|
||||
def update_ai_draft(socket, params, reload) do
|
||||
socket
|
||||
|> assign(:settings_editor_ai_draft, normalize_ai_params(params))
|
||||
|> reload.(socket.assigns.workbench)
|
||||
end
|
||||
|
||||
@spec refresh_ai_models(term(), term(), term(), term()) :: term()
|
||||
def refresh_ai_models(socket, endpoint_key, reload, append_output) do
|
||||
attrs = ai_attrs(socket.assigns)
|
||||
|
||||
@@ -65,11 +69,17 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
||||
end
|
||||
end
|
||||
|
||||
@spec save_ai(term(), term(), term()) :: term()
|
||||
def save_ai(socket, reload, append_output) do
|
||||
attrs = ai_attrs(socket.assigns)
|
||||
|
||||
with :ok <-
|
||||
put_endpoint_preferences(:online, attrs.online_url, attrs.online_api_key, attrs.online_chat_model),
|
||||
put_endpoint_preferences(
|
||||
:online,
|
||||
attrs.online_url,
|
||||
attrs.online_api_key,
|
||||
attrs.online_chat_model
|
||||
),
|
||||
:ok <-
|
||||
put_endpoint_preferences(
|
||||
:airplane,
|
||||
@@ -85,7 +95,10 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
||||
:ok <- maybe_put_model_preference(:airplane_chat, attrs.offline_chat_model),
|
||||
:ok <- maybe_put_model_preference(:airplane_title, attrs.offline_title_model),
|
||||
:ok <-
|
||||
maybe_put_model_preference(:airplane_image_analysis, attrs.offline_image_analysis_model),
|
||||
maybe_put_model_preference(
|
||||
:airplane_image_analysis,
|
||||
attrs.offline_image_analysis_model
|
||||
),
|
||||
:ok <- EditorSettings.put_global_setting("ai.system_prompt", attrs.system_prompt) do
|
||||
socket
|
||||
|> assign(:settings_editor_ai_draft, %{})
|
||||
@@ -99,6 +112,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.AISettings do
|
||||
end
|
||||
end
|
||||
|
||||
@spec reset_ai_prompt(term(), term(), term()) :: term()
|
||||
def reset_ai_prompt(socket, reload, append_output) do
|
||||
case EditorSettings.put_global_setting("ai.system_prompt", "") do
|
||||
:ok ->
|
||||
|
||||
@@ -6,21 +6,25 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.EditorSettings do
|
||||
alias BDS.Settings
|
||||
alias BDS.Desktop.ShellData
|
||||
|
||||
@spec editor_form() :: term()
|
||||
def editor_form do
|
||||
%{
|
||||
"default_mode" => get_global_setting("ui.preferred_editor_mode") || "markdown",
|
||||
"diff_view_style" => get_global_setting("ui.git_diff_view_style") || "inline",
|
||||
"wrap_long_lines" => get_global_setting("ui.git_diff_word_wrap") == "true",
|
||||
"hide_unchanged_regions" => get_global_setting("ui.git_diff_hide_unchanged_regions") == "true"
|
||||
"hide_unchanged_regions" =>
|
||||
get_global_setting("ui.git_diff_hide_unchanged_regions") == "true"
|
||||
}
|
||||
end
|
||||
|
||||
@spec update_editor_draft(term(), term(), term()) :: term()
|
||||
def update_editor_draft(socket, params, reload) do
|
||||
socket
|
||||
|> assign(:settings_editor_editor_draft, normalize_editor_params(params))
|
||||
|> reload.(socket.assigns.workbench)
|
||||
end
|
||||
|
||||
@spec save_editor(term(), term(), term()) :: term()
|
||||
def save_editor(socket, reload, append_output) do
|
||||
attrs = editor_attrs(socket.assigns)
|
||||
|
||||
@@ -43,10 +47,12 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.EditorSettings do
|
||||
end
|
||||
end
|
||||
|
||||
@spec get_global_setting(term()) :: term()
|
||||
def get_global_setting(key) do
|
||||
Settings.get_global_setting(key)
|
||||
end
|
||||
|
||||
@spec put_global_setting(term(), term()) :: term()
|
||||
def put_global_setting(key, value) do
|
||||
Settings.put_global_setting(key, value)
|
||||
end
|
||||
|
||||
@@ -14,10 +14,13 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.ManagedCategories do
|
||||
"page" => %{title: "page", render_in_lists: false, show_title: true}
|
||||
}
|
||||
|
||||
@spec protected_categories() :: term()
|
||||
def protected_categories, do: @protected_categories
|
||||
|
||||
@spec protected_category?(term()) :: term()
|
||||
def protected_category?(category), do: MapSet.member?(@protected_categories, category)
|
||||
|
||||
@spec category_rows(term()) :: term()
|
||||
def category_rows(metadata) do
|
||||
categories = Map.get(metadata, :categories, [])
|
||||
settings = Map.get(metadata, :category_settings, %{})
|
||||
@@ -37,12 +40,14 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.ManagedCategories do
|
||||
end)
|
||||
end
|
||||
|
||||
@spec update_new_category(term(), term(), term()) :: term()
|
||||
def update_new_category(socket, name, reload) do
|
||||
socket
|
||||
|> assign(:settings_editor_new_category, to_string(name || ""))
|
||||
|> reload.(socket.assigns.workbench)
|
||||
end
|
||||
|
||||
@spec add_category(term(), term(), term()) :: term()
|
||||
def add_category(socket, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
name = socket.assigns[:settings_editor_new_category] |> to_string() |> String.trim()
|
||||
@@ -73,11 +78,13 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.ManagedCategories do
|
||||
end
|
||||
end
|
||||
|
||||
@spec reset_categories(term(), term(), term()) :: term()
|
||||
def reset_categories(socket, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
|
||||
result =
|
||||
Enum.reduce_while(category_names(project_metadata(socket.assigns)), :ok, fn category, _acc ->
|
||||
Enum.reduce_while(category_names(project_metadata(socket.assigns)), :ok, fn category,
|
||||
_acc ->
|
||||
if MapSet.member?(@protected_categories, category) do
|
||||
{:cont, :ok}
|
||||
else
|
||||
@@ -102,6 +109,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.ManagedCategories do
|
||||
end
|
||||
end
|
||||
|
||||
@spec save_category(term(), term(), term(), term()) :: term()
|
||||
def save_category(socket, params, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
category = Map.get(params, "category", "")
|
||||
@@ -125,6 +133,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.ManagedCategories do
|
||||
end
|
||||
end
|
||||
|
||||
@spec remove_category(term(), term(), term(), term()) :: term()
|
||||
def remove_category(socket, category, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.MCPConfig do
|
||||
%{id: :openai_codex, label: "OpenAI Codex", supported?: false}
|
||||
]
|
||||
|
||||
@spec mcp_rows() :: term()
|
||||
def mcp_rows do
|
||||
Enum.map(@mcp_agents, fn agent ->
|
||||
%{
|
||||
@@ -28,6 +29,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.MCPConfig do
|
||||
end)
|
||||
end
|
||||
|
||||
@spec toggle_mcp_agent(term(), term(), term(), term()) :: term()
|
||||
def toggle_mcp_agent(socket, agent, reload, append_output) do
|
||||
case find_mcp_agent(agent) do
|
||||
%{id: agent_id, supported?: true} = config ->
|
||||
|
||||
@@ -6,12 +6,14 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.ProjectSettings do
|
||||
alias BDS.Metadata
|
||||
alias BDS.Desktop.ShellData
|
||||
|
||||
@spec project_metadata(term()) :: term()
|
||||
def project_metadata(assigns) do
|
||||
case Metadata.get_project_metadata(assigns.projects.active_project_id) do
|
||||
{:ok, metadata} -> metadata
|
||||
end
|
||||
end
|
||||
|
||||
@spec project_form(term()) :: term()
|
||||
def project_form(metadata) do
|
||||
%{
|
||||
"name" => Map.get(metadata, :name, ""),
|
||||
@@ -28,18 +30,21 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.ProjectSettings do
|
||||
}
|
||||
end
|
||||
|
||||
@spec technology_form(term()) :: term()
|
||||
def technology_form(project_form) do
|
||||
%{
|
||||
"semantic_similarity_enabled" => Map.get(project_form, "semantic_similarity_enabled", false)
|
||||
}
|
||||
end
|
||||
|
||||
@spec update_project_draft(term(), term(), term()) :: term()
|
||||
def update_project_draft(socket, params, reload) do
|
||||
socket
|
||||
|> assign(:settings_editor_project_draft, normalize_project_params(params))
|
||||
|> reload.(socket.assigns.workbench)
|
||||
end
|
||||
|
||||
@spec save_project(term(), term(), term()) :: term()
|
||||
def save_project(socket, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.PublishingSettings do
|
||||
alias BDS.Metadata
|
||||
alias BDS.Desktop.ShellData
|
||||
|
||||
@spec publishing_form(term()) :: term()
|
||||
def publishing_form(metadata) do
|
||||
prefs = Map.get(metadata, :publishing_preferences, %{})
|
||||
|
||||
@@ -17,12 +18,14 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.PublishingSettings do
|
||||
}
|
||||
end
|
||||
|
||||
@spec update_publishing_draft(term(), term(), term()) :: term()
|
||||
def update_publishing_draft(socket, params, reload) do
|
||||
socket
|
||||
|> assign(:settings_editor_publishing_draft, normalize_publishing_params(params))
|
||||
|> reload.(socket.assigns.workbench)
|
||||
end
|
||||
|
||||
@spec save_publishing(term(), term(), term()) :: term()
|
||||
def save_publishing(socket, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
|
||||
@@ -39,6 +42,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.PublishingSettings do
|
||||
end
|
||||
end
|
||||
|
||||
@spec clear_publishing(term(), term(), term()) :: term()
|
||||
def clear_publishing(socket, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.StyleEditor do
|
||||
"zinc"
|
||||
]
|
||||
|
||||
@spec build_style(term()) :: term()
|
||||
def build_style(%{projects: %{active_project_id: nil}}), do: nil
|
||||
|
||||
def build_style(assigns) do
|
||||
@@ -40,22 +41,26 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.StyleEditor do
|
||||
selected_theme: selected_theme,
|
||||
applied_theme: current_theme(assigns),
|
||||
preview_mode: preview_mode,
|
||||
preview_url: "http://127.0.0.1:4123/__style-preview?theme=#{selected_theme}&mode=#{preview_mode}"
|
||||
preview_url:
|
||||
"http://127.0.0.1:4123/__style-preview?theme=#{selected_theme}&mode=#{preview_mode}"
|
||||
}
|
||||
end
|
||||
|
||||
@spec select_style_theme(term(), term(), term()) :: term()
|
||||
def select_style_theme(socket, theme, reload) do
|
||||
socket
|
||||
|> assign(:style_editor_theme, to_string(theme || "default"))
|
||||
|> reload.(socket.assigns.workbench)
|
||||
end
|
||||
|
||||
@spec change_style_preview_mode(term(), term(), term()) :: term()
|
||||
def change_style_preview_mode(socket, mode, reload) do
|
||||
socket
|
||||
|> assign(:style_editor_preview_mode, to_string(mode || "auto"))
|
||||
|> reload.(socket.assigns.workbench)
|
||||
end
|
||||
|
||||
@spec apply_style_theme(term(), term(), term()) :: term()
|
||||
def apply_style_theme(socket, reload, append_output) do
|
||||
project_id = socket.assigns.projects.active_project_id
|
||||
theme = socket.assigns[:style_editor_theme] || current_theme(socket.assigns)
|
||||
@@ -71,6 +76,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.StyleEditor do
|
||||
end
|
||||
end
|
||||
|
||||
@spec theme_display_name(term()) :: term()
|
||||
def theme_display_name(theme) do
|
||||
theme
|
||||
|> to_string()
|
||||
@@ -78,6 +84,7 @@ defmodule BDS.Desktop.ShellLive.SettingsEditor.StyleEditor do
|
||||
|> String.capitalize()
|
||||
end
|
||||
|
||||
@spec current_theme(term()) :: term()
|
||||
def current_theme(assigns) do
|
||||
case Metadata.get_project_metadata(assigns.projects.active_project_id) do
|
||||
{:ok, metadata} ->
|
||||
|
||||
Reference in New Issue
Block a user