mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-09-07 15:07:17 +00:00
The navigate-500 fix replaced a working call to the existing tuneInSearchSection helper with new hand-rolled container-handling logic that silently dropped several things the original already did correctly: - An empty container (no "Type" field, only "ContainerType") fell through to a default branch that treats any unrecognized type as directly playable, turning the container's own non-playable GuideId into a bogus playback link. Now skipped instead. - The Pivots.More.Url "load more" pagination cursor was never read, so a container with more children than fit on one page silently showed only the first page. Extracted the cursor-link logic already in tuneInSearchSection into a shared tuneInMoreCursorLink helper, used by both. - The legacy lowercase "children" key (tuneInSearchSection's own fallback for "Children") was dropped entirely. - The response's self link used "/v1/navigate/profile/" (singular); no route dispatcher recognizes that, breaking re-navigation via the link itself. - base64.URLEncoding (padded) vs. RawURLEncoding (no padding), two lines apart building the same kind of href -- decodeBase64URI already tolerates both, which is why this never surfaced as a decode failure. Standardized on RawURLEncoding, matching every other encode site in the file. - The "profiles" path case (duplicated pre-existing in both handlers_bmx_tunein.go and stations.go) had no fallback for an empty encoded URI, unlike the sibling "sub" case a few lines above. Both copies now fall back the same way "sub" does. Added TestTuneInNavigateProfileHandlesContainerShapes covering all four tunein.go fixes against a fixture server modeling the real two-fetch profile/contents shape. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>