Handle errors when storing assets

This commit is contained in:
Claudio Ortolina
2026-03-03 08:27:05 +00:00
parent 6b4b964851
commit 88e09a6ad8
5 changed files with 62 additions and 37 deletions
+2 -1
View File
@@ -46,7 +46,8 @@
"Bash(ls:*)", "Bash(ls:*)",
"WebFetch(domain:raw.githubusercontent.com)", "WebFetch(domain:raw.githubusercontent.com)",
"WebFetch(domain:github.com)", "WebFetch(domain:github.com)",
"WebFetch(domain:hex.pm)" "WebFetch(domain:hex.pm)",
"Bash(gh issue:*)"
] ]
}, },
"enableAllProjectMcpServers": false "enableAllProjectMcpServers": false
+20 -18
View File
@@ -583,27 +583,29 @@ defmodule MusicLibraryWeb.Components.RecordForm do
end end
defp save_record(socket, record_params, uploaded_covers) do defp save_record(socket, record_params, uploaded_covers) do
params = with {:ok, params} <- maybe_store_uploaded_cover(record_params, uploaded_covers),
case uploaded_covers do {:ok, record} <- Records.update_record(socket.assigns.record, params) do
[] -> notify_parent({:saved, record})
record_params
[cover_params] ->
{:ok, asset} = Assets.store_image(cover_params)
Map.put(record_params, "cover_hash", asset.hash)
end
case Records.update_record(socket.assigns.record, params) do
{:ok, record} ->
notify_parent({:saved, record})
{:noreply,
socket
|> put_toast(:info, gettext("Record updated successfully"))
|> push_patch(to: socket.assigns.patch)}
{:noreply,
socket
|> put_toast(:info, gettext("Record updated successfully"))
|> push_patch(to: socket.assigns.patch)}
else
{:error, %Ecto.Changeset{} = changeset} -> {:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, form: to_form(changeset))} {:noreply, assign(socket, form: to_form(changeset))}
{:error, _reason} ->
{:noreply, put_toast(socket, :error, gettext("Failed to store cover image"))}
end
end
defp maybe_store_uploaded_cover(params, []), do: {:ok, params}
defp maybe_store_uploaded_cover(params, [cover_params]) do
case Assets.store_image(cover_params) do
{:ok, asset} -> {:ok, Map.put(params, "cover_hash", asset.hash)}
{:error, reason} -> {:error, reason}
end end
end end
+20 -18
View File
@@ -294,27 +294,29 @@ defmodule MusicLibraryWeb.ArtistLive.Form do
end end
defp save_artist_info(socket, artist_info_params, uploaded_images) do defp save_artist_info(socket, artist_info_params, uploaded_images) do
params = with {:ok, params} <- maybe_store_uploaded_image(artist_info_params, uploaded_images),
case uploaded_images do {:ok, artist_info} <- Artists.update_artist_info(socket.assigns.artist_info, params) do
[] -> notify_parent({:saved, artist_info})
artist_info_params
[image_params] ->
{:ok, asset} = Assets.store_image(image_params)
Map.put(artist_info_params, "image_data_hash", asset.hash)
end
case Artists.update_artist_info(socket.assigns.artist_info, params) do
{:ok, artist_info} ->
notify_parent({:saved, artist_info})
{:noreply,
socket
|> put_toast(:info, gettext("Artist updated successfully"))
|> push_patch(to: socket.assigns.patch)}
{:noreply,
socket
|> put_toast(:info, gettext("Artist updated successfully"))
|> push_patch(to: socket.assigns.patch)}
else
{:error, %Ecto.Changeset{} = changeset} -> {:error, %Ecto.Changeset{} = changeset} ->
{:noreply, assign(socket, form: to_form(changeset))} {:noreply, assign(socket, form: to_form(changeset))}
{:error, _reason} ->
{:noreply, put_toast(socket, :error, gettext("Failed to store artist image"))}
end
end
defp maybe_store_uploaded_image(params, []), do: {:ok, params}
defp maybe_store_uploaded_image(params, [image_params]) do
case Assets.store_image(image_params) do
{:ok, asset} -> {:ok, Map.put(params, "image_data_hash", asset.hash)}
{:error, reason} -> {:error, reason}
end end
end end
+10
View File
@@ -2053,3 +2053,13 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Refresh Last.fm data" msgid "Refresh Last.fm data"
msgstr "" msgstr ""
#: lib/music_library_web/live/artist_live/form.ex
#, elixir-autogen, elixir-format
msgid "Failed to store artist image"
msgstr ""
#: lib/music_library_web/components/record_form.ex
#, elixir-autogen, elixir-format
msgid "Failed to store cover image"
msgstr ""
+10
View File
@@ -2053,3 +2053,13 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Refresh Last.fm data" msgid "Refresh Last.fm data"
msgstr "" msgstr ""
#: lib/music_library_web/live/artist_live/form.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Failed to store artist image"
msgstr ""
#: lib/music_library_web/components/record_form.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Failed to store cover image"
msgstr ""