Fix page title for scrobble anything release page
This commit is contained in:
@@ -45,6 +45,8 @@ defmodule MusicLibraryWeb.Components.Release do
|
|||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def handle_async(:release_with_tracks, {:ok, {:ok, release}}, socket) do
|
def handle_async(:release_with_tracks, {:ok, {:ok, release}}, socket) do
|
||||||
|
notify_release_loaded(socket, release)
|
||||||
|
|
||||||
socket =
|
socket =
|
||||||
socket
|
socket
|
||||||
|> assign(
|
|> assign(
|
||||||
@@ -74,6 +76,13 @@ defmodule MusicLibraryWeb.Components.Release do
|
|||||||
)}
|
)}
|
||||||
end
|
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
|
defp apply_pending_form_params(socket) do
|
||||||
case socket.assigns.pending_form_params do
|
case socket.assigns.pending_form_params do
|
||||||
nil ->
|
nil ->
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ defmodule MusicLibraryWeb.ScrobbleLive.ReleaseShow do
|
|||||||
release_id={@release_id}
|
release_id={@release_id}
|
||||||
show_print?={false}
|
show_print?={false}
|
||||||
timezone={@timezone}
|
timezone={@timezone}
|
||||||
|
on_release_loaded={:release_loaded}
|
||||||
/>
|
/>
|
||||||
</Layouts.app>
|
</Layouts.app>
|
||||||
"""
|
"""
|
||||||
@@ -62,4 +63,30 @@ defmodule MusicLibraryWeb.ScrobbleLive.ReleaseShow do
|
|||||||
|> assign(:rg_id, rg_id)
|
|> assign(:rg_id, rg_id)
|
||||||
|> assign(:release_id, release_id)}
|
|> assign(:release_id, release_id)}
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
@@ -1290,6 +1290,7 @@ msgstr ""
|
|||||||
#: lib/music_library_web/components/layouts/app.html.heex
|
#: 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/index.ex
|
||||||
#: lib/music_library_web/live/scrobble_live/release_group_show.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
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Scrobble Anything"
|
msgid "Scrobble Anything"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1437,6 +1438,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: lib/music_library_web/components/release.ex
|
#: lib/music_library_web/components/release.ex
|
||||||
#: lib/music_library_web/live/collection_live/index.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
|
#: lib/music_library_web/live/wishlist_live/index.ex
|
||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Release"
|
msgid "Release"
|
||||||
|
|||||||
@@ -1290,6 +1290,7 @@ msgstr ""
|
|||||||
#: lib/music_library_web/components/layouts/app.html.heex
|
#: 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/index.ex
|
||||||
#: lib/music_library_web/live/scrobble_live/release_group_show.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
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Scrobble Anything"
|
msgid "Scrobble Anything"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1437,6 +1438,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: lib/music_library_web/components/release.ex
|
#: lib/music_library_web/components/release.ex
|
||||||
#: lib/music_library_web/live/collection_live/index.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
|
#: lib/music_library_web/live/wishlist_live/index.ex
|
||||||
#, elixir-autogen, elixir-format, fuzzy
|
#, elixir-autogen, elixir-format, fuzzy
|
||||||
msgid "Release"
|
msgid "Release"
|
||||||
|
|||||||
@@ -42,5 +42,15 @@ defmodule MusicLibraryWeb.ScrobbleLive.ReleaseShowTest do
|
|||||||
|> visit(~p"/scrobble/#{@rg_id}/releases/#{@release_id}")
|
|> visit(~p"/scrobble/#{@rg_id}/releases/#{@release_id}")
|
||||||
|> assert_has("a[href='/scrobble/#{@rg_id}']", text: "Back to releases")
|
|> assert_has("a[href='/scrobble/#{@rg_id}']", text: "Back to releases")
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user