Add button to retry fetching release tracks
This commit is contained in:
@@ -26,8 +26,8 @@ defmodule MusicLibraryWeb.Components.Release do
|
|||||||
socket
|
socket
|
||||||
|> assign(assigns)
|
|> assign(assigns)
|
||||||
|> assign_async(:release_with_tracks, fn ->
|
|> assign_async(:release_with_tracks, fn ->
|
||||||
with {:ok, release} <- MusicBrainz.get_release(record.selected_release_id) do
|
with {:ok, release} <- load_release_with_tracks(record.selected_release_id) do
|
||||||
{:ok, %{release_with_tracks: MusicBrainz.Release.from_api_response(release)}}
|
{:ok, %{release_with_tracks: release}}
|
||||||
end
|
end
|
||||||
end)}
|
end)}
|
||||||
end
|
end
|
||||||
@@ -104,6 +104,14 @@ defmodule MusicLibraryWeb.Components.Release do
|
|||||||
data-slot="icon"
|
data-slot="icon"
|
||||||
/>
|
/>
|
||||||
{gettext("Error loading tracks")}
|
{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>
|
</div>
|
||||||
</:failed>
|
</:failed>
|
||||||
<.medium
|
<.medium
|
||||||
@@ -377,6 +385,24 @@ defmodule MusicLibraryWeb.Components.Release do
|
|||||||
{:noreply, socket}
|
{:noreply, socket}
|
||||||
end
|
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
|
defp medium_selected?(medium, selected_tracks) do
|
||||||
medium_track_ids = medium.tracks |> Enum.map(& &1.id) |> MapSet.new()
|
medium_track_ids = medium.tracks |> Enum.map(& &1.id) |> MapSet.new()
|
||||||
MapSet.subset?(medium_track_ids, selected_tracks)
|
MapSet.subset?(medium_track_ids, selected_tracks)
|
||||||
|
|||||||
@@ -1958,3 +1958,8 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Record sets"
|
msgid "Record sets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/music_library_web/components/release.ex
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Retry"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
@@ -1958,3 +1958,8 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Record sets"
|
msgid "Record sets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/music_library_web/components/release.ex
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Retry"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
Reference in New Issue
Block a user