Fix page title for scrobble anything release page

This commit is contained in:
Claudio Ortolina
2026-04-23 21:06:32 +01:00
parent 1bd5707cb4
commit 0784fc5e0c
5 changed files with 50 additions and 0 deletions
@@ -45,6 +45,8 @@ defmodule MusicLibraryWeb.Components.Release do
@impl true
def handle_async(:release_with_tracks, {:ok, {:ok, release}}, socket) do
notify_release_loaded(socket, release)
socket =
socket
|> assign(
@@ -74,6 +76,13 @@ defmodule MusicLibraryWeb.Components.Release do
)}
end
defp notify_release_loaded(socket, release) do
case socket.assigns[:on_release_loaded] do
nil -> :ok
tag -> send(self(), {tag, release})
end
end
defp apply_pending_form_params(socket) do
case socket.assigns.pending_form_params do
nil ->
@@ -38,6 +38,7 @@ defmodule MusicLibraryWeb.ScrobbleLive.ReleaseShow do
release_id={@release_id}
show_print?={false}
timezone={@timezone}
on_release_loaded={:release_loaded}
/>
</Layouts.app>
"""
@@ -62,4 +63,30 @@ defmodule MusicLibraryWeb.ScrobbleLive.ReleaseShow do
|> assign(:rg_id, rg_id)
|> assign(:release_id, release_id)}
end
@impl true
def handle_info({:release_loaded, release}, socket) do
{:noreply, assign(socket, :page_title, page_title(release))}
end
defp page_title(release) do
Enum.join(
[
artist_names(release),
"-",
release.title,
"·",
gettext("Release"),
"·",
gettext("Scrobble Anything")
],
" "
)
end
defp artist_names(release) do
release.artists
|> Enum.map_join(fn artist -> artist.name <> (artist.joinphrase || "") end)
|> String.trim()
end
end
+2
View File
@@ -1290,6 +1290,7 @@ msgstr ""
#: lib/music_library_web/components/layouts/app.html.heex
#: lib/music_library_web/live/scrobble_live/index.ex
#: lib/music_library_web/live/scrobble_live/release_group_show.ex
#: lib/music_library_web/live/scrobble_live/release_show.ex
#, elixir-autogen, elixir-format
msgid "Scrobble Anything"
msgstr ""
@@ -1437,6 +1438,7 @@ msgstr ""
#: lib/music_library_web/components/release.ex
#: lib/music_library_web/live/collection_live/index.ex
#: lib/music_library_web/live/scrobble_live/release_show.ex
#: lib/music_library_web/live/wishlist_live/index.ex
#, elixir-autogen, elixir-format
msgid "Release"
+2
View File
@@ -1290,6 +1290,7 @@ msgstr ""
#: lib/music_library_web/components/layouts/app.html.heex
#: lib/music_library_web/live/scrobble_live/index.ex
#: lib/music_library_web/live/scrobble_live/release_group_show.ex
#: lib/music_library_web/live/scrobble_live/release_show.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Scrobble Anything"
msgstr ""
@@ -1437,6 +1438,7 @@ msgstr ""
#: lib/music_library_web/components/release.ex
#: lib/music_library_web/live/collection_live/index.ex
#: lib/music_library_web/live/scrobble_live/release_show.ex
#: lib/music_library_web/live/wishlist_live/index.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Release"
@@ -42,5 +42,15 @@ defmodule MusicLibraryWeb.ScrobbleLive.ReleaseShowTest do
|> visit(~p"/scrobble/#{@rg_id}/releases/#{@release_id}")
|> assert_has("a[href='/scrobble/#{@rg_id}']", text: "Back to releases")
end
test "sets the page title once the release loads", %{conn: conn} do
{:ok, view, _html} =
Phoenix.LiveViewTest.live(conn, ~p"/scrobble/#{@rg_id}/releases/#{@release_id}")
render_async(view)
assert Phoenix.LiveViewTest.page_title(view) ==
"Marillion - Marbles · Release · Scrobble Anything"
end
end
end