defmodule MusicLibraryWeb.ArtistLive.Show do use MusicLibraryWeb, :live_view import MusicLibraryWeb.RecordComponents, only: [record_grid: 1, country_label: 1, artist_image: 1] alias MusicLibrary.{Artists, Records} alias MusicLibrary.Artists.ArtistInfo attr :country, :map, required: true defp country_flag(assigns) do ~H""" {country_label(@country.code)} {@country.name} """ end attr :lastfm_artist_info, :map, required: true defp on_tour_link(assigns) do ~H""" <.badge variant="soft" class="mr-2">{gettext("On Tour")} """ end attr :play_count, :integer, required: true defp play_count(assigns) do ~H""" 0} class="text-xs font-medium text-zinc-700 dark:text-zinc-300 grow"> {ngettext("1 scrobble", "%{count} scrobbles", @play_count)} {gettext("No scrobbles")} """ end attr :title, :string, required: true attr :artists, :list, required: true defp artist_grid(assigns) do ~H"""
{artist.name}
{@artist.musicbrainz_id}
<.copy_to_clipboard
target_id={"mb-#{@artist.musicbrainz_id}"}
label={gettext("Copy MusicBrainz ID to clipboard")}
/>
{@biography.description}
{@biography.summary_html}
<.link class="block mt-2 text-sm font-medium text-zinc-900 dark:text-zinc-400" phx-click={Fluxon.open_dialog("bio")} > <.icon name="hero-arrow-right-end-on-rectangle" class="-mt-1 mr-1 h-5 w-5" aria-hidden="true" data-slot="icon" /> {gettext("Read more")}#{link}
) ], "" ) PhoenixHTMLHelpers.Format.text_to_html(reformatted_bio, escape: false, attributes: [class: "mt-2 text-sm/7"] ) [text, link, license] -> reformatted_bio = Enum.join( [ text, ~s(#{link}
), ~s(#{license}
) ], "" ) PhoenixHTMLHelpers.Format.text_to_html(reformatted_bio, escape: false, attributes: [class: "mt-2 text-sm/7"] ) other -> PhoenixHTMLHelpers.Format.text_to_html(other, escape: false, attributes: [class: "mt-2 text-sm/7"] ) end end defp remove_read_more_link(summary) do last_fm_link_regex = ~r/