From 0c7196639f8e3d0d16f3af2253402ab678a14199 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Mon, 1 Dec 2025 09:36:01 +0000 Subject: [PATCH] In scrobble activitiy, prioritize matchin on collected release first When the collection contains multiple records for the same release group, we want the scrobble activity to first match against the one that was actually scrobbled, as opposed to ANY other collected release. --- lib/music_library/collection.ex | 3 ++- lib/music_library/scrobble_activity.ex | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/music_library/collection.ex b/lib/music_library/collection.ex index 8873df5e..3b7139f3 100644 --- a/lib/music_library/collection.ex +++ b/lib/music_library/collection.ex @@ -126,7 +126,8 @@ defmodule MusicLibrary.Collection do select: %{ record_id: fragment("records.id"), cover_hash: fragment("records.cover_hash"), - release_id: r.value + release_id: r.value, + selected_release_id: fragment("records.selected_release_id") } end diff --git a/lib/music_library/scrobble_activity.ex b/lib/music_library/scrobble_activity.ex index 36839e14..cb14f8fa 100644 --- a/lib/music_library/scrobble_activity.ex +++ b/lib/music_library/scrobble_activity.ex @@ -190,7 +190,9 @@ defmodule MusicLibrary.ScrobbleActivity do tracks_query = from t in Track, left_join: cr in subquery(Collection.collected_releases_query()), - on: cr.release_id == fragment("? ->> '$.musicbrainz_id'", t.album), + on: + cr.selected_release_id == fragment("? ->> '$.musicbrainz_id'", t.album) or + cr.release_id == fragment("? ->> '$.musicbrainz_id'", t.album), left_join: wr in subquery(Wishlist.wishlisted_releases_query()), on: wr.release_id == fragment("? ->> '$.musicbrainz_id'", t.album), left_join: ar in subquery(all_artists_query),