Do not reset changeset on parent update for secret and file system components

This commit is contained in:
José Valim 2024-03-31 11:18:26 +02:00
parent 4ac8468c45
commit e284c65a9a
3 changed files with 27 additions and 18 deletions

View file

@ -4,6 +4,11 @@ defmodule LivebookWeb.Hub.FileSystemFormComponent do
alias Livebook.FileSystem alias Livebook.FileSystem
alias Livebook.FileSystems alias Livebook.FileSystems
@impl true
def mount(socket) do
{:ok, assign(socket, changeset: nil, error_message: nil)}
end
@impl true @impl true
def update(assigns, socket) do def update(assigns, socket) do
{file_system, assigns} = Map.pop!(assigns, :file_system) {file_system, assigns} = Map.pop!(assigns, :file_system)
@ -13,17 +18,17 @@ defmodule LivebookWeb.Hub.FileSystemFormComponent do
title = title(file_system) title = title(file_system)
file_system = file_system || %FileSystem.S3{hub_id: assigns.hub.id} file_system = file_system || %FileSystem.S3{hub_id: assigns.hub.id}
changeset = FileSystems.change_file_system(file_system) changeset = socket.assigns.changeset || FileSystems.change_file_system(file_system)
socket = assign(socket, assigns)
{:ok, {:ok,
assign(socket, socket
|> assign(assigns)
|> assign(
file_system: file_system, file_system: file_system,
changeset: changeset, changeset: changeset,
mode: mode, mode: mode,
title: title, title: title,
button: button, button: button
error_message: nil
)} )}
end end

View file

@ -5,23 +5,28 @@ defmodule LivebookWeb.Hub.SecretFormComponent do
alias Livebook.Secrets alias Livebook.Secrets
alias Livebook.Secrets.Secret alias Livebook.Secrets.Secret
@impl true
def mount(socket) do
{:ok, assign(socket, changeset: nil, error_message: nil)}
end
@impl true @impl true
def update(assigns, socket) do def update(assigns, socket) do
changeset = changeset =
Secrets.change_secret(%Secret{}, %{ socket.assigns.changeset ||
name: assigns.secret_name, Secrets.change_secret(%Secret{}, %{
value: assigns.secret_value name: assigns.secret_name,
}) value: assigns.secret_value
})
socket = assign(socket, assigns)
{:ok, {:ok,
assign(socket, socket
|> assign(assigns)
|> assign(
title: title(socket), title: title(socket),
button: button_attrs(socket), button: button_attrs(socket),
changeset: changeset, changeset: changeset,
deployment_group_id: assigns[:deployment_group_id], deployment_group_id: assigns[:deployment_group_id]
error_message: nil
)} )}
end end

View file

@ -36,7 +36,6 @@ defmodule LivebookWeb.Hub.Teams.DeploymentGroupFormComponent do
</div> </div>
<div class="flex flex-columns gap-4"> <div class="flex flex-columns gap-4">
<.form <.form
:let={f}
id={"#{@id}-form"} id={"#{@id}-form"}
for={@form} for={@form}
phx-target={@myself} phx-target={@myself}
@ -47,7 +46,7 @@ defmodule LivebookWeb.Hub.Teams.DeploymentGroupFormComponent do
> >
<div class="flex flex-col space-y-4"> <div class="flex flex-col space-y-4">
<.text_field <.text_field
field={f[:name]} field={@form[:name]}
label="Name" label="Name"
autofocus="true" autofocus="true"
spellcheck="false" spellcheck="false"
@ -61,14 +60,14 @@ defmodule LivebookWeb.Hub.Teams.DeploymentGroupFormComponent do
Deployment group mode. Deployment group mode.
''' '''
} }
field={f[:mode]} field={@form[:mode]}
options={[ options={[
{"Offline", :offline}, {"Offline", :offline},
{"Online", :online} {"Online", :online}
]} ]}
/> />
<LivebookWeb.AppComponents.deployment_group_form_content hub={@hub} form={f} /> <LivebookWeb.AppComponents.deployment_group_form_content hub={@hub} form={@form} />
<div class="flex space-x-2"> <div class="flex space-x-2">
<.button type="submit" disabled={not @form.source.valid?}> <.button type="submit" disabled={not @form.source.valid?}>