diff --git a/lib/livebook/runtime/evaluator/default_formatter.ex b/lib/livebook/runtime/evaluator/default_formatter.ex
index b6446cc7b..9a7291c39 100644
--- a/lib/livebook/runtime/evaluator/default_formatter.ex
+++ b/lib/livebook/runtime/evaluator/default_formatter.ex
@@ -129,6 +129,8 @@ defmodule Livebook.Runtime.Evaluator.DefaultFormatter do
IO.ANSI.format([:red, string], true)
end
- defp error_type(%System.EnvError{env: "LB_" <> secret}), do: {:missing_secret, secret}
+ defp error_type(%System.EnvError{env: "LB_" <> secret_label}),
+ do: {:missing_secret, secret_label}
+
defp error_type(_), do: :other
end
diff --git a/lib/livebook_web/live/output.ex b/lib/livebook_web/live/output.ex
index c96e410d6..f3eef305d 100644
--- a/lib/livebook_web/live/output.ex
+++ b/lib/livebook_web/live/output.ex
@@ -235,11 +235,11 @@ defmodule LivebookWeb.Output do
)
end
- defp render_output({:error, formatted, {:missing_secret, secret}}, %{
+ defp render_output({:error, formatted, {:missing_secret, secret_label}}, %{
socket: socket,
session_id: session_id
}) do
- assigns = %{message: formatted, secret: secret}
+ assigns = %{message: formatted, secret_label: secret_label}
~H"""
@@ -249,9 +249,9 @@ defmodule LivebookWeb.Output do
>
<.remix_icon icon="close-circle-line" />
- Missing secret <%= inspect(@secret) %>
+ Missing secret <%= inspect(@secret_label) %>
- <%= live_patch to: Routes.session_path(socket, :secrets, session_id, secret: secret),
+ <%= live_patch to: Routes.session_path(socket, :secrets, session_id, secret_label: secret_label),
class: "button-base button-gray",
aria_label: "add secret",
role: "button" do %>
diff --git a/lib/livebook_web/live/session_live.ex b/lib/livebook_web/live/session_live.ex
index b849a71f6..d975d142e 100644
--- a/lib/livebook_web/live/session_live.ex
+++ b/lib/livebook_web/live/session_live.ex
@@ -404,7 +404,7 @@ defmodule LivebookWeb.SessionLive do
module={LivebookWeb.SessionLive.SecretsComponent}
id="secrets"
session={@session}
- secret={@secret}
+ prefill_secret_label={@prefill_secret_label}
return_to={@self_path}
/>
@@ -749,8 +749,7 @@ defmodule LivebookWeb.SessionLive do
def handle_params(params, _url, socket)
when socket.assigns.live_action == :secrets do
- label = Map.get(params, "secret", "")
- {:noreply, assign(socket, secret: %{"label" => label, "value" => ""})}
+ {:noreply, assign(socket, prefill_secret_label: Map.get(params, "secret_label", ""))}
end
def handle_params(_params, _url, socket) do
diff --git a/lib/livebook_web/live/session_live/secrets_component.ex b/lib/livebook_web/live/session_live/secrets_component.ex
index 84fc805e9..af291c8ff 100644
--- a/lib/livebook_web/live/session_live/secrets_component.ex
+++ b/lib/livebook_web/live/session_live/secrets_component.ex
@@ -1,6 +1,20 @@
defmodule LivebookWeb.SessionLive.SecretsComponent do
use LivebookWeb, :live_component
+ @impl true
+ def update(assigns, socket) do
+ socket = assign(socket, assigns)
+
+ socket =
+ if socket.assigns[:data] do
+ socket
+ else
+ assign(socket, data: %{"label" => assigns.prefill_secret_label, "value" => ""})
+ end
+
+ {:ok, socket}
+ end
+
@impl true
def render(assigns) do
~H"""
@@ -13,7 +27,7 @@ defmodule LivebookWeb.SessionLive.SecretsComponent do
<.form
let={f}
- for={:secret}
+ for={:data}
phx-submit="save"
phx-change="validate"
autocomplete="off"
@@ -25,7 +39,7 @@ defmodule LivebookWeb.SessionLive.SecretsComponent do
Label
(alphanumeric and underscore)
<%= text_input(f, :label,
- value: @secret["label"],
+ value: @data["label"],
class: "input",
placeholder: "secret label",
autofocus: true,
@@ -36,7 +50,7 @@ defmodule LivebookWeb.SessionLive.SecretsComponent do
Value
<%= text_input(f, :value,
- value: @secret["value"],
+ value: @data["value"],
class: "input",
placeholder: "secret value",
aria_labelledby: "secret-value",
@@ -44,7 +58,7 @@ defmodule LivebookWeb.SessionLive.SecretsComponent do
) %>
-