- <%= for {secret_name, _} <- session_only_secrets(@data_view.secrets, @livebook_secrets) do %>
-
<%= for {secret_name, secret_value} = secret <- Enum.sort(@livebook_secrets) do %>
-
-
- <%= secret_name %>
-
- <.switch_checkbox
- name="toggle_secret"
- checked={is_secret_on_session?(secret, @data_view.secrets)}
- phx-click="toggle_secret"
- phx-value-secret_name={secret_name}
- phx-value-secret_value={secret_value}
- />
+
+
+ JS.toggle(to: "#app-secret-#{secret_name}-detail", display: "flex")
+ |> JS.add_class("bg-gray-100",
+ to: "#app-secret-#{secret_name}-wrapper"
+ )
+ }
+ >
+ <%= secret_name %>
+
+ <.switch_checkbox
+ name="toggle_secret"
+ checked={is_secret_on_session?(secret, @data_view.secrets)}
+ phx-click="toggle_secret"
+ phx-value-secret_name={secret_name}
+ phx-value-secret_value={secret_value}
+ />
+
+
+
+
+ JS.toggle(to: "#app-secret-#{secret_name}-detail", display: "flex")
+ |> JS.remove_class("bg-gray-100",
+ to: "#app-secret-#{secret_name}-wrapper"
+ )
+ }
+ >
+ <%= secret_name %>
+
+ <.switch_checkbox
+ name="toggle_secret"
+ checked={is_secret_on_session?(secret, @data_view.secrets)}
+ phx-click="toggle_secret"
+ phx-value-secret_name={secret_name}
+ phx-value-secret_value={secret_value}
+ />
+
+
+
+ <%= secret_value %>
+
+
+
+
+
<% end %>
@@ -1204,6 +1315,16 @@ defmodule LivebookWeb.SessionLive do
{:noreply, socket}
end
+ def handle_event("delete_session_secret", %{"secret_name" => secret_name}, socket) do
+ Livebook.Session.unset_secret(socket.assigns.session.pid, secret_name)
+ {:noreply, socket}
+ end
+
+ def handle_event("delete_app_secret", %{"secret_name" => secret_name}, socket) do
+ Livebook.Secrets.unset_secret(secret_name)
+ {:noreply, socket}
+ end
+
@impl true
def handle_info({:operation, operation}, socket) do
{:noreply, handle_operation(socket, operation)}
@@ -1286,6 +1407,12 @@ defmodule LivebookWeb.SessionLive do
{:noreply, assign(socket, livebook_secrets: livebook_secrets)}
end
+ def handle_info({:unset_secret, secret}, socket) do
+ livebook_secrets = Map.delete(socket.assigns.livebook_secrets, secret.name)
+
+ {:noreply, assign(socket, livebook_secrets: livebook_secrets)}
+ end
+
def handle_info(_message, socket), do: {:noreply, socket}
defp handle_relative_path(socket, path, requested_url) do