Handle errors when storing assets
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 ""
|
||||||
|
|||||||
@@ -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 ""
|
||||||
|
|||||||
Reference in New Issue
Block a user