defmodule LivebookWeb.Hub.EditLive do use LivebookWeb, :live_view alias LivebookWeb.{PageHelpers, 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, type: nil, page_title: "Livebook - Hub", env_var_id: nil)} end @impl true def handle_params(params, _url, socket) do hub = Hubs.fetch_hub!(params["id"]) type = Provider.type(hub) if type == "local" do {:noreply, socket |> redirect(to: "/") |> put_flash(:warning, "You can't edit the localhost Hub")} else {:noreply, assign(socket, hub: hub, type: type, page_title: "Livebook - Hub", params: params, env_var_id: params["env_var_id"] )} end end @impl true def render(assigns) do ~H"""
<%= if @type == "fly" do %> <.live_component module={LivebookWeb.Hub.Edit.FlyComponent} hub={@hub} id="fly-form" live_action={@live_action} env_var_id={@env_var_id} /> <% end %> <%= if @type == "enterprise" do %> <.live_component module={LivebookWeb.Hub.Edit.EnterpriseComponent} hub={@hub} id="enterprise-form" /> <% end %>
""" 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_redirect(to: "/")} end end