diff --git a/lib/music_library/records.ex b/lib/music_library/records.ex index 8f90bcb7..4d11f850 100644 --- a/lib/music_library/records.ex +++ b/lib/music_library/records.ex @@ -100,6 +100,12 @@ defmodule MusicLibrary.Records do Repo.one!(q) end + def get_all_artist_ids do + q = from ar in ArtistRecord, distinct: true, select: ar.musicbrainz_id + + Repo.all(q) + end + def get_artist_records(musicbrainz_id) do q = from r in Record, diff --git a/lib/music_library_web/live/stats_live/index.ex b/lib/music_library_web/live/stats_live/index.ex index 6693b1c0..09cc14d0 100644 --- a/lib/music_library_web/live/stats_live/index.ex +++ b/lib/music_library_web/live/stats_live/index.ex @@ -25,6 +25,8 @@ defmodule MusicLibraryWeb.StatsLive.Index do collected_release_ids = Collection.collected_release_ids(release_ids) wishlisted_release_ids = Wishlist.wishlisted_release_ids(release_ids) + artist_ids = Records.get_all_artist_ids() + if connected?(socket) do LastFm.Feed.subscribe() end @@ -44,6 +46,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do latest_record: latest_record, collected_release_ids: collected_release_ids, wishlisted_release_ids: wishlisted_release_ids, + artist_ids: artist_ids, nav_section: :stats )} end @@ -59,11 +62,14 @@ defmodule MusicLibraryWeb.StatsLive.Index do collected_release_ids = Collection.collected_release_ids(release_ids) wishlisted_release_ids = Wishlist.wishlisted_release_ids(release_ids) + artist_ids = Records.get_all_artist_ids() + {:noreply, socket |> assign( collected_release_ids: collected_release_ids, - wishlisted_release_ids: wishlisted_release_ids + wishlisted_release_ids: wishlisted_release_ids, + artist_ids: artist_ids ) |> stream(:recent_tracks, recent_tracks, reset: true)} end diff --git a/lib/music_library_web/live/stats_live/index.html.heex b/lib/music_library_web/live/stats_live/index.html.heex index 34b642c2..8b0fb32f 100644 --- a/lib/music_library_web/live/stats_live/index.html.heex +++ b/lib/music_library_web/live/stats_live/index.html.heex @@ -100,9 +100,19 @@
{track.title}
-

+

{track.artist.name}

+ <.link + :if={track.artist.musicbrainz_id in @artist_ids} + class="font-semibold text-sm block text-zinc-700 hover:text-zinc-500 dark:text-zinc-400 dark:hover:text-zinc-300" + navigate={~p"/artists/#{track.artist.musicbrainz_id}"} + > + {track.artist.name} +

{track.title}

diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 6f1e5c28..5b7e5a70 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -267,7 +267,7 @@ msgid "Something went wrong!" msgstr "" #: lib/music_library_web/components/layouts/app.html.heex:8 -#: lib/music_library_web/live/stats_live/index.ex:39 +#: lib/music_library_web/live/stats_live/index.ex:41 #, elixir-autogen, elixir-format msgid "Stats" msgstr "" @@ -364,17 +364,17 @@ msgid "Scrobble activity" msgstr "" #: lib/music_library_web/live/record_live/import_component.ex:80 -#: lib/music_library_web/live/stats_live/index.html.heex:177 +#: lib/music_library_web/live/stats_live/index.html.heex:187 #, elixir-autogen, elixir-format msgid "Choose which format to import" msgstr "" -#: lib/music_library_web/live/stats_live/index.html.heex:145 +#: lib/music_library_web/live/stats_live/index.html.heex:155 #, elixir-autogen, elixir-format msgid "Collected" msgstr "" -#: lib/music_library_web/live/stats_live/index.html.heex:158 +#: lib/music_library_web/live/stats_live/index.html.heex:168 #, elixir-autogen, elixir-format msgid "Wishlisted" msgstr "" @@ -446,7 +446,7 @@ msgstr "" msgid "Error refreshing cover" msgstr "" -#: lib/music_library_web/live/stats_live/index.html.heex:132 +#: lib/music_library_web/live/stats_live/index.html.heex:142 #, elixir-autogen, elixir-format msgid "No MB ID" msgstr ""