No need to keep uploaded images in the socket

As images are only processed on save AFTER validation, we can avoid
keeping them in the socket, with the only downside of losing a little
resilience in case the save operation errors out (in which case the
upload would be lost).
This commit is contained in:
Claudio Ortolina
2024-09-30 13:50:07 +01:00
parent 1f1c69f738
commit 9cd24bad17
@@ -7,7 +7,6 @@ defmodule MusicLibraryWeb.RecordLive.FormComponent do
def mount(socket) do
{:ok,
socket
|> assign(:uploaded_images, [])
|> allow_upload(:image_data, accept: ~w(.jpg .jpeg), max_entries: 1)}
end
@@ -74,14 +73,12 @@ defmodule MusicLibraryWeb.RecordLive.FormComponent do
{:ok, File.read!(path)}
end)
socket
|> assign(:uploaded_images, uploaded_images)
|> save_record(socket.assigns.action, record_params)
save_record(socket, record_params, uploaded_images)
end
defp save_record(socket, :edit, record_params) do
defp save_record(socket, record_params, uploaded_images) do
params =
case socket.assigns.uploaded_images do
case uploaded_images do
[] -> record_params
[image_path] -> Map.put(record_params, "image_data", image_path)
end
@@ -92,7 +89,6 @@ defmodule MusicLibraryWeb.RecordLive.FormComponent do
{:noreply,
socket
|> assign(:uploaded_images, [])
|> put_flash(:info, "Record updated successfully")
|> push_patch(to: socket.assigns.patch)}