Packages
livebook
0.9.0
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
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/hub/edit_live.ex
defmodule LivebookWeb.Hub.EditLive do
use LivebookWeb, :live_view
alias LivebookWeb.LayoutHelpers
alias Livebook.Hubs
alias Livebook.Hubs.Provider
on_mount LivebookWeb.SidebarHook
@impl true
def mount(_params, _session, socket) do
{:ok,
assign(socket,
hub: nil,
secrets: [],
type: nil,
page_title: "Livebook - Hub",
env_var_id: nil,
secret_name: nil
)}
end
@impl true
def handle_params(params, _url, socket) do
Livebook.Hubs.subscribe([:secrets])
hub = Hubs.fetch_hub!(params["id"])
type = Provider.type(hub)
{:noreply,
assign(socket,
hub: hub,
type: type,
secrets: Hubs.get_secrets(hub),
page_title: "Livebook - Hub",
params: params,
env_var_id: params["env_var_id"],
secret_name: params["secret_name"]
)}
end
@impl true
def render(assigns) do
~H"""
<LayoutHelpers.layout
current_page={~p"/hub/#{@hub.id}"}
current_user={@current_user}
saved_hubs={@saved_hubs}
>
<div class="p-4 md:px-12 md:py-7 max-w-screen-md mx-auto">
<%= case @type do %>
<% "fly" -> %>
<.live_component
module={LivebookWeb.Hub.Edit.FlyComponent}
hub={@hub}
id="fly-form"
live_action={@live_action}
env_var_id={@env_var_id}
/>
<% "personal" -> %>
<.live_component
module={LivebookWeb.Hub.Edit.PersonalComponent}
hub={@hub}
secrets={@secrets}
live_action={@live_action}
secret_name={@secret_name}
id="personal-form"
/>
<% "enterprise" -> %>
<.live_component
module={LivebookWeb.Hub.Edit.EnterpriseComponent}
hub={@hub}
id="enterprise-form"
/>
<% end %>
</div>
</LayoutHelpers.layout>
"""
end
@impl true
def handle_event("delete_hub", %{"id" => id}, socket) do
Hubs.delete_hub(id)
{:noreply,
socket
|> put_flash(:success, "Hub deleted successfully")
|> push_navigate(to: "/")}
end
@impl true
def handle_info({:secret_created, %{hub_id: id}}, %{assigns: %{hub: %{id: id}}} = socket) do
{:noreply,
socket
|> refresh_secrets()
|> put_flash(:success, "Secret created successfully")}
end
def handle_info({:secret_updated, %{hub_id: id}}, %{assigns: %{hub: %{id: id}}} = socket) do
{:noreply,
socket
|> refresh_secrets()
|> put_flash(:success, "Secret updated successfully")}
end
def handle_info({:secret_deleted, %{hub_id: id}}, %{assigns: %{hub: %{id: id}}} = socket) do
{:noreply,
socket
|> refresh_secrets()
|> put_flash(:success, "Secret deleted successfully")}
end
def handle_info(_message, socket) do
{:noreply, socket}
end
defp refresh_secrets(socket) do
assign(socket, secrets: Livebook.Hubs.get_secrets(socket.assigns.hub))
end
end