Packages
livebook
0.16.3
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/hub/secret_list_component.ex
defmodule LivebookWeb.Hub.SecretListComponent do
use LivebookWeb, :live_component
alias Livebook.Hubs
alias Livebook.Secrets
alias Livebook.Secrets.Secret
@impl true
def render(assigns) do
~H"""
<div class="flex flex-col space-y-4">
<div class="flex flex-col space-y-4">
<.no_entries :if={@secrets == []}>
No secrets here... yet!
</.no_entries>
<div :if={@secrets != []}>
<.table rows={@secrets} id={@id}>
<:col :let={secret} label="Name">{secret.name}</:col>
<:action :let={secret}>
<span class="tooltip left" data-tooltip="Edit">
<.icon_button
aria-label={"edit #{secret.name}"}
patch={"/#{@edit_path}/#{secret.name}"}
type="button"
role="menuitem"
>
<.remix_icon icon="edit-fill" />
</.icon_button>
</span>
</:action>
<:action :let={secret}>
<span class="tooltip left" data-tooltip="Delete">
<.icon_button
aria-label={"delete #{secret.name}"}
type="button"
phx-click={
JS.push("delete_hub_secret",
value: %{
name: secret.name,
value: secret.value,
hub_id: secret.hub_id,
deployment_group_id: secret.deployment_group_id,
return_to: @return_to
},
target: @myself
)
}
role="menuitem"
>
<.remix_icon icon="delete-bin-6-line" />
</.icon_button>
</span>
</:action>
</.table>
</div>
</div>
</div>
"""
end
@impl true
def handle_event("delete_hub_secret", attrs, socket) do
on_confirm = fn socket ->
{:ok, secret} = Secrets.update_secret(%Secret{}, attrs)
hub = Hubs.fetch_hub!(secret.hub_id)
case Hubs.delete_secret(hub, secret) do
:ok ->
socket
|> put_flash(:success, "Secret #{secret.name} deleted successfully")
|> push_patch(to: attrs["return_to"])
{:transport_error, reason} ->
put_flash(socket, :error, reason)
end
end
assigns = %{name: attrs["name"]}
description = ~H"""
Are you sure you want to delete this secret - <span class="font-semibold">{@name}</span>?
"""
{:noreply,
confirm(socket, on_confirm,
title: "Delete secret",
description: description,
confirm_text: "Delete",
confirm_icon: "delete-bin-6-line"
)}
end
end