- Ya
- 7 Agosti 2026, 04:07 UTC
- Mwandishi
- kamo
- Ahadi ya
- f9272ff
socialTimelineApi.timeline set providers to a joined CSV. A comma in a query VALUE travels as %2C, and any hop that re-encodes turns that into %252C — APIService did exactly this, handing its upstream URL to RestTemplate as a String, which treats it as a URI TEMPLATE and encodes a second time. MediaService decodes once and sees the single run-together token "facebook%2Cx", which matches no provider code, so a multi-provider filter returned an empty feed. Selecting one chip or none is a fixed point, which is why nobody reported it. The gateway's own double-encode is fixed in APIService's matching commit, and the social timeline proxy reaches MediaService directly on 8443 rather than through that gateway — but the client should not depend on any hop's encoding behaviour, and repeated params are the correct wire shape regardless. - timeline appends one `providers` param per selected chip. A CSV handed in by any future caller is SPLIT here rather than passed through, so the old shape cannot silently come back, and blank tokens are dropped instead of sending `providers=`. - The proxy route's contract is spelled out: forwardToMediaService passes the raw search string through verbatim, so every occurrence survives, and it must never be collapsed back into a CSV. Tests assert the URL that actually leaves the browser: repeated params, no '%' and no ',' anywhere in the query, a CSV split rather than forwarded, the single-provider request unchanged, and providers omitted entirely when no chip is selected. MediaService accepts both shapes through one parsing rule (see its matching commit), so cached and bookmarked CSV URLs are unaffected. tsc --noEmit clean; 879 tests, 0 failures; next build succeeds.