Skip to content

Commit 03299a3

Browse files
authored
fix crash from switching between Work edit and view modes (#807)
1 parent b97a9e6 commit 03299a3

File tree

1 file changed

+25
-21
lines changed
  • lib/banchan_web/live/work_live

1 file changed

+25
-21
lines changed

lib/banchan_web/live/work_live/work.ex

+25-21
Original file line numberDiff line numberDiff line change
@@ -316,29 +316,33 @@ defmodule BanchanWeb.WorkLive.Work do
316316
end
317317

318318
def handle_info({:updated_uploads, _, uploads}, socket) do
319-
uploads_param =
320-
uploads
321-
|> Enum.with_index()
322-
|> Enum.map(fn {{ty, data}, index} ->
323-
if ty == :live do
324-
%WorkUpload{}
325-
|> WorkUpload.changeset(%{"index" => index, "ref" => data.ref, "comment" => ""})
326-
else
327-
data
328-
|> WorkUpload.changeset(%{"index" => index})
329-
end
330-
end)
319+
if is_nil(socket.assigns.changeset) do
320+
{:noreply, socket}
321+
else
322+
uploads_param =
323+
uploads
324+
|> Enum.with_index()
325+
|> Enum.map(fn {{ty, data}, index} ->
326+
if ty == :live do
327+
%WorkUpload{}
328+
|> WorkUpload.changeset(%{"index" => index, "ref" => data.ref, "comment" => ""})
329+
else
330+
data
331+
|> WorkUpload.changeset(%{"index" => index})
332+
end
333+
end)
331334

332-
changeset =
333-
Work.changeset(
334-
socket.assigns.work,
335-
socket.assigns.changeset.params |> Map.put("uploads", uploads_param)
336-
)
337-
|> Map.put(:action, if(is_nil(socket.assigns.work.id), do: :insert, else: :update))
335+
changeset =
336+
Work.changeset(
337+
socket.assigns.work,
338+
socket.assigns.changeset.params |> Map.put("uploads", uploads_param)
339+
)
340+
|> Map.put(:action, if(is_nil(socket.assigns.work.id), do: :insert, else: :update))
338341

339-
{:noreply,
340-
socket
341-
|> assign(work_uploads: uploads, changeset: changeset)}
342+
{:noreply,
343+
socket
344+
|> assign(work_uploads: uploads, changeset: changeset)}
345+
end
342346
end
343347

344348
@impl true

0 commit comments

Comments
 (0)