diff --git a/lib/music_brainz/release_group_search_result.ex b/lib/music_brainz/release_group_search_result.ex index 8b222649..33043852 100644 --- a/lib/music_brainz/release_group_search_result.ex +++ b/lib/music_brainz/release_group_search_result.ex @@ -20,7 +20,10 @@ defmodule MusicBrainz.ReleaseGroupSearchResult do id: rg["id"], type: ReleaseGroup.parse_type(rg["primary-type"]), title: rg["title"], - artists: Enum.map_join(rg["artist-credit"], ", ", fn ac -> ac["artist"]["name"] end), + artists: + Enum.map_join(rg["artist-credit"], fn ac -> + ac["artist"]["name"] <> (ac["joinphrase"] || "") + end), release_date: rg["first-release-date"] } end diff --git a/lib/music_library/records/record.ex b/lib/music_library/records/record.ex index ff0f9a06..9cfd265e 100644 --- a/lib/music_library/records/record.ex +++ b/lib/music_library/records/record.ex @@ -37,7 +37,9 @@ defmodule MusicLibrary.Records.Record do @spec artist_names(t()) :: String.t() def artist_names(record) do - Enum.map_join(record.artists, ", ", fn artist -> artist.name end) + record.artists + |> Enum.map_join(fn artist -> artist.name <> artist.joinphrase end) + |> String.trim() end @spec main_artist(t()) :: Artist.t() | nil diff --git a/lib/music_library_web/components/stats_components.ex b/lib/music_library_web/components/stats_components.ex index d83b980c..da15b854 100644 --- a/lib/music_library_web/components/stats_components.ex +++ b/lib/music_library_web/components/stats_components.ex @@ -41,13 +41,7 @@ defmodule MusicLibraryWeb.StatsComponents do {@record.title} - <.link - :for={artist <- @record.artists} - class="text-sm md:text-base text-zinc-600 dark:text-zinc-300 hover:text-zinc-500 dark:hover:text-zinc-200" - navigate={~p"/artists/#{artist.musicbrainz_id}"} - > - {artist.name} - + <.artist_links artists={@record.artists} joinphrase_class="text-sm md:text-base" />

diff --git a/test/music_library/records/similarity_test.exs b/test/music_library/records/similarity_test.exs index 2f2ad76e..e3c3c9f7 100644 --- a/test/music_library/records/similarity_test.exs +++ b/test/music_library/records/similarity_test.exs @@ -171,8 +171,7 @@ defmodule MusicLibrary.Records.SimilarityTest do text = Similarity.text_representation(record) - # Record.artist_names joins with ", " not with joinphrase - assert text =~ "Artists: Artist One, Artist Two" + assert text =~ "Artists: Artist One & Artist Two" end end