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

View file

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

View file

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