fix(slint): MyQBZ row artist links route by item source

The detail view's artist click forwarded only the artist NAME, and the
top-level router's heuristic (numeric = Qobuz, name = local) sent every
click - Qobuz items included - to the LocalLibrary artist page. The
callback now carries (source, name, artist id): Qobuz items navigate to
the Qobuz artist page (same recorded-history path as AlbumView's artist
button), local/plex items keep the LocalLibrary destination. The resolved-
item model gains artist_id hydrated from the first resolved track (live-
pushed when the resolve lands; a click before hydration is ignored with a
warn instead of navigating wrong). Both click sites updated (list/expanded
subtitle link + expanded inline rows); grid cards render plain text as
before.

cc
This commit is contained in:
vicrodh committed 2026-06-10 09:43:52 -06:00
1 parent 3c87df308b
commit 016869e21b
4 files changed
+75 -29

No files matched your search

+9 -2
View File
@@ -1661,6 +1661,11 @@ export struct MixtapeDetailItem {
// True for qobuz items whose subtitle is a clickable artist link
// (spec 12 §6.3 col-2 — local subtitles are plain text).
subtitle-is-link: bool,
// Numeric Qobuz artist id resolved by the resolveItems pass ("" until it
// lands / for local-Plex items). Routes the artist link to the QOBUZ
// artist page; without it the link can only fall back to the
// LocalLibrary Artists tab (name-based).
artist-id: string,
// Resolved source kind for the source indicator + source filter
// ("qobuz" | "plex" | "local"). Defaults from `source` until resolveItems
// lands (deferred — for now equals the raw source mapping).
@@ -1774,8 +1779,10 @@ export global MyQbzDetailActions {
// Open an item's detail (album / track-album / playlist). Routed to the
// existing open-album / open-playlist paths in main.rs.
callback open-item(string /* source */, string /* item-type */, string /* source-item-id */);
// Open an item's artist page by name (qobuz items only).
callback open-artist(string /* source */, string /* artist-name */);
// Open an item's artist. Qobuz items route by the resolved numeric
// artist-id to the Qobuz artist page; local/Plex items (empty id) route
// by NAME to the LocalLibrary Artists tab.
callback open-artist(string /* source */, string /* artist-name */, string /* artist-id */);
// --- Hero CTAs --------------------------------------------------------
callback play-all();
callback shuffle();