Add button to retry fetching release tracks

This commit is contained in:
Claudio Ortolina
2026-02-14 09:35:46 +00:00
parent b04453acbc
commit 6e655cd866
3 changed files with 38 additions and 2 deletions
+28 -2
View File
@@ -26,8 +26,8 @@ defmodule MusicLibraryWeb.Components.Release do
socket
|> assign(assigns)
|> assign_async(:release_with_tracks, fn ->
with {:ok, release} <- MusicBrainz.get_release(record.selected_release_id) do
{:ok, %{release_with_tracks: MusicBrainz.Release.from_api_response(release)}}
with {:ok, release} <- load_release_with_tracks(record.selected_release_id) do
{:ok, %{release_with_tracks: release}}
end
end)}
end
@@ -104,6 +104,14 @@ defmodule MusicLibraryWeb.Components.Release do
data-slot="icon"
/>
{gettext("Error loading tracks")}
<.button
variant="ghost"
size="xs"
phx-click={JS.push("load_release_tracks", target: @myself)}
class="ml-2 cursor-pointer"
>
{gettext("Retry")}
</.button>
</div>
</:failed>
<.medium
@@ -377,6 +385,24 @@ defmodule MusicLibraryWeb.Components.Release do
{:noreply, socket}
end
def handle_event("load_release_tracks", _params, socket) do
selected_release_id = socket.assigns.record.selected_release_id
{:noreply,
socket
|> assign_async(:release_with_tracks, fn ->
with {:ok, release} <- load_release_with_tracks(selected_release_id) do
{:ok, %{release_with_tracks: release}}
end
end)}
end
defp load_release_with_tracks(release_id) do
with {:ok, release} <- MusicBrainz.get_release(release_id) do
{:ok, MusicBrainz.Release.from_api_response(release)}
end
end
defp medium_selected?(medium, selected_tracks) do
medium_track_ids = medium.tracks |> Enum.map(& &1.id) |> MapSet.new()
MapSet.subset?(medium_track_ids, selected_tracks)
+5
View File
@@ -1958,3 +1958,8 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Record sets"
msgstr ""
#: lib/music_library_web/components/release.ex
#, elixir-autogen, elixir-format
msgid "Retry"
msgstr ""
+5
View File
@@ -1958,3 +1958,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Record sets"
msgstr ""
#: lib/music_library_web/components/release.ex
#, elixir-autogen, elixir-format
msgid "Retry"
msgstr ""