defmodule LivebookWeb.Hub.Edit.TeamComponent do use LivebookWeb, :live_component alias Livebook.Hubs.Team alias Livebook.Teams alias LivebookWeb.LayoutHelpers @impl true def update(assigns, socket) do socket = assign(socket, assigns) changeset = Team.change_hub(assigns.hub) show_key? = assigns.params["show-key"] == "true" {:ok, socket |> assign(show_key: show_key?) |> assign_form(changeset)} end @impl true def render(assigns) do ~H"""
<.modal :if={@show_key} id="show-key-modal" width={:medium} show={true} patch={~p"/hub/#{@hub.id}"} >

Teams Key

This is your Teams Key. If you want to join or invite others to your organization, you will need to share your Teams Key with them. We recommend storing it somewhere safe:

General

<.form :let={f} id={@id} class="flex flex-col mt-4 space-y-4" for={@form} phx-submit="save" phx-change="validate" phx-target={@myself} >
<.emoji_field field={f[:hub_emoji]} label="Emoji" />
""" end @impl true def handle_event("save", %{"team" => params}, socket) do case Teams.update_hub(socket.assigns.hub, params) do {:ok, hub} -> {:noreply, socket |> put_flash(:success, "Hub updated successfully") |> push_navigate(to: ~p"/hub/#{hub.id}")} {:error, changeset} -> {:noreply, assign_form(socket, changeset)} end end def handle_event("validate", %{"team" => attrs}, socket) do changeset = socket.assigns.hub |> Team.change_hub(attrs) |> Map.replace!(:action, :validate) {:noreply, assign_form(socket, changeset)} end defp assign_form(socket, %Ecto.Changeset{} = changeset) do assign(socket, form: to_form(changeset)) end end