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")}
+
+