diff --git a/lib/music_library/scrobble_activity.ex b/lib/music_library/scrobble_activity.ex index 0124d172..6508a484 100644 --- a/lib/music_library/scrobble_activity.ex +++ b/lib/music_library/scrobble_activity.ex @@ -289,8 +289,8 @@ defmodule MusicLibrary.ScrobbleActivity do fragment("json_extract(artist, '$.musicbrainz_id')") ], select: %{ - artist_name: fragment("json_extract(artist, '$.name')"), - artist_musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), + name: fragment("json_extract(artist, '$.name')"), + musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), image_hash: ai.image_data_hash, play_count: count(t.scrobbled_at_uts) }, @@ -326,8 +326,8 @@ defmodule MusicLibrary.ScrobbleActivity do fragment("json_extract(artist, '$.musicbrainz_id')") ], select: %{ - artist_name: fragment("json_extract(artist, '$.name')"), - artist_musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), + name: fragment("json_extract(artist, '$.name')"), + musicbrainz_id: fragment("json_extract(artist, '$.musicbrainz_id')"), image_hash: ai.image_data_hash, play_count: count(t.scrobbled_at_uts) }, diff --git a/lib/music_library_web/components/artist_components.ex b/lib/music_library_web/components/artist_components.ex new file mode 100644 index 00000000..b1376c73 --- /dev/null +++ b/lib/music_library_web/components/artist_components.ex @@ -0,0 +1,27 @@ +defmodule MusicLibraryWeb.ArtistComponents do + use MusicLibraryWeb, :html + + alias MusicLibrary.Assets.Transform + + attr :artist, :map, required: true + attr :image_hash, :string, required: true + attr :class, :string, required: false + attr :width, :integer, default: nil + + def artist_image(assigns) do + payload = + %Transform{hash: assigns.image_hash, width: assigns.width} + |> Transform.encode!() + + assigns = assign(assigns, :payload, payload) + + ~H""" + {@artist.name} ~p"/images/cover-not-found.png" <> "';"} + /> + """ + end +end diff --git a/lib/music_library_web/components/search_components.ex b/lib/music_library_web/components/search_components.ex index 4583c288..98d6379d 100644 --- a/lib/music_library_web/components/search_components.ex +++ b/lib/music_library_web/components/search_components.ex @@ -6,8 +6,8 @@ defmodule MusicLibraryWeb.SearchComponents do use MusicLibraryWeb, :html import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1, record_cover: 1] + import MusicLibraryWeb.ArtistComponents, only: [artist_image: 1] - alias MusicLibrary.Assets.Transform alias MusicLibrary.Records.Record @doc """ @@ -78,12 +78,7 @@ defmodule MusicLibraryWeb.SearchComponents do >
- {@artist.name} ~p"/images/cover-not-found.png" <> "';"} - /> + <.artist_image artist={@artist} width={96} image_hash={@image_data_hash} />

@@ -98,14 +93,6 @@ defmodule MusicLibraryWeb.SearchComponents do """ end - defp artist_image_path(image_data_hash) do - payload = - %Transform{hash: image_data_hash, width: 96} - |> Transform.encode!() - - ~p"/assets/#{payload}" - end - @doc """ Renders a search result group with a title and items. diff --git a/lib/music_library_web/live/artist_live/form_component.ex b/lib/music_library_web/live/artist_live/form_component.ex index 1021ce4e..09b801c0 100644 --- a/lib/music_library_web/live/artist_live/form_component.ex +++ b/lib/music_library_web/live/artist_live/form_component.ex @@ -1,9 +1,10 @@ defmodule MusicLibraryWeb.ArtistLive.FormComponent do use MusicLibraryWeb, :live_component + import MusicLibraryWeb.ArtistComponents, only: [artist_image: 1] + alias MusicLibrary.Artists alias MusicLibrary.Assets - alias MusicLibrary.Assets.Transform @impl true def mount(socket) do @@ -43,11 +44,11 @@ defmodule MusicLibraryWeb.ArtistLive.FormComponent do ]} >

- {@artist.name} <.live_img_preview :for={entry <- @uploads.image_data.entries} @@ -150,12 +151,4 @@ defmodule MusicLibraryWeb.ArtistLive.FormComponent do end defp notify_parent(msg), do: send(self(), {__MODULE__, msg}) - - defp artist_image_path(artist_info) do - payload = - %Transform{hash: artist_info.image_data_hash} - |> Transform.encode!() - - ~p"/assets/#{payload}" - end end diff --git a/lib/music_library_web/live/artist_live/show.ex b/lib/music_library_web/live/artist_live/show.ex index 4d890914..387c9501 100644 --- a/lib/music_library_web/live/artist_live/show.ex +++ b/lib/music_library_web/live/artist_live/show.ex @@ -4,9 +4,10 @@ defmodule MusicLibraryWeb.ArtistLive.Show do import MusicLibraryWeb.RecordComponents, only: [record_grid: 1, country_label: 1] + import MusicLibraryWeb.ArtistComponents, only: [artist_image: 1] + alias MusicLibrary.Artists.ArtistInfo alias MusicLibrary.{Artists, Records} - alias(MusicLibrary.Assets.Transform) attr :country, :map, required: true @@ -63,11 +64,10 @@ defmodule MusicLibraryWeb.ArtistLive.Show do
  • - {artist.name} ~p"/images/cover-not-found.png" <> "';"} + artist={artist} + image_hash={artist.image_data_hash} />