feat(discover): Not interested menu action with live removal + backfill

ArtistGridCard's context menu gains a 4th item (Not interested,
thumbs-down icon; popup height bumped for the extra row) that emits
("artist", id, "not-interested") through the existing media-action
chain. The new central arm persists the dismissal to the reco_dismiss
store and, when the artist is in a reco rail, removes the card live and
backfills the freed slot from the rail's retained overflow (already
Qobuz-validated — no network; the pop re-checks live exclusions and
cross-rail visibility). Dismissed from a non-reco surface, the display
name is resolved via get_artist before persisting, so the management
list and toast still read well.

km
This commit is contained in:
vicrodh committed 2026-07-22 22:11:58 -06:00
1 parent 465f8627eb
commit a181fb7aa9
3 files changed
+183 -1

No files matched your search

+10 -1
View File
@@ -203,7 +203,7 @@ export component ArtistGridCard inherits Rectangle {
x: 21px;
y: 143px;
width: 196px;
height: 3 * 33px + 10px;
height: 4 * 33px + 10px;
ContextMenu {
ContextMenuItem {
icon: @image-url("../assets/icons/user.svg");
@@ -228,6 +228,15 @@ export component ArtistGridCard inherits Rectangle {
root.media-action(root.follow-kind, root.artist.id, "follow");
}
}
// Reco-scoped dismissal (NOT the blacklist): the artist
// leaves the Recommendations rails only.
ContextMenuItem {
icon: @image-url("../assets/icons/thumbs-down.svg");
label: @tr("Not interested");
clicked => {
root.media-action("artist", root.artist.id, "not-interested");
}
}
}
}
}