From 5973206da3077c0034b9f4bee4f70239f77ee780 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Wed, 1 Jan 2025 16:11:14 +0000 Subject: [PATCH] Link to collected albums in scrobble activity --- lib/music_library/collection.ex | 6 +++--- lib/music_library_web/live/stats_live/index.ex | 10 ++++++++-- .../live/stats_live/index.html.heex | 18 ++++++++++-------- priv/gettext/default.pot | 6 +++--- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/lib/music_library/collection.ex b/lib/music_library/collection.ex index c9478187..79a766d1 100644 --- a/lib/music_library/collection.ex +++ b/lib/music_library/collection.ex @@ -50,14 +50,14 @@ defmodule MusicLibrary.Collection do Repo.one!(q) end - def collected_release_ids(release_ids) do + def collected_releases(release_ids) do q = from r in fragment("records, json_each(records.release_ids)"), where: r.value in ^release_ids, where: fragment("records.purchased_at IS NOT NULL"), - select: r.value + select: %{record_id: fragment("records.id"), release_id: r.value} - q |> Repo.all() |> MapSet.new() + q |> Repo.all() end defp base_search do diff --git a/lib/music_library_web/live/stats_live/index.ex b/lib/music_library_web/live/stats_live/index.ex index e014f775..7d96b9ac 100644 --- a/lib/music_library_web/live/stats_live/index.ex +++ b/lib/music_library_web/live/stats_live/index.ex @@ -88,7 +88,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do defp assign_scrobble_activity(socket, recent_tracks) do recent_release_ids = recent_release_ids(recent_tracks) - collected_release_ids = Collection.collected_release_ids(recent_release_ids) + collected_releases = Collection.collected_releases(recent_release_ids) wishlisted_release_ids = Wishlist.wishlisted_release_ids(recent_release_ids) all_artist_ids = Artists.get_all_artist_ids() @@ -96,7 +96,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do artist_ids = MapSet.intersection(all_artist_ids, recent_artist_ids) assign(socket, - collected_release_ids: collected_release_ids, + collected_releases: collected_releases, wishlisted_release_ids: wishlisted_release_ids, artist_ids: artist_ids ) @@ -117,6 +117,12 @@ defmodule MusicLibraryWeb.StatsLive.Index do |> MapSet.new() end + defp collected_record?(collected_releases, r_id) do + Enum.find_value(collected_releases, fn %{record_id: record_id, release_id: release_id} -> + if release_id == r_id, do: record_id + end) + end + # The Tailwind build step requires all needed classes to be explicitly referenced # in the source code, and not dynamically generated. This implies that one cannot # (for example) interpolate a number in a class name. 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 831d4165..09dd8d37 100644 --- a/lib/music_library_web/live/stats_live/index.html.heex +++ b/lib/music_library_web/live/stats_live/index.html.heex @@ -142,19 +142,21 @@ > {gettext("No MB ID")} - + - {gettext("Collected")} - + ]}> + {gettext("Collected")} + +