fix(twitch,rumble,shorts): replis serveur, embed Rumble autoritaire, refonte UX Shorts
CI / build-and-test (push) Successful in 14m15s

This commit is contained in:
2026-09-29 10:39:03 -04:00
parent 3fe05b3c30
commit f76a3795c2
6 changed files with 530 additions and 90 deletions
@@ -353,11 +353,23 @@ export class ProviderThemePageComponent implements OnDestroy {
if (r['clip']) this.twitchCursors.clip = r['clip'].nextCursor || null;
if (r['channel']) this.twitchCursors.channel = r['channel'].nextCursor || null;
const items = Object.values(r).flatMap(x => x?.items || []);
// Filet de sécurité : si VODs+clips vides et aucun live, compléter par top streams.
// Filets de sécurité : si VODs+clips vides et aucun live, compléter
// par top streams (repli serveur inclus), puis par la recherche
// serveur unifiée (/api/search?providers=tw).
const hasContent = items.length > 0;
if (!hasContent && firstPage) {
this.api.getTwitchTopStreamsPage(null).subscribe({
next: (top) => finish([...items, ...(top.items || [])], top.nextCursor || null),
next: (top) => {
const all = [...items, ...(top.items || [])];
if (all.length) {
finish(all, top.nextCursor || null);
return;
}
this.api.searchTwitchViaServer(query, 24).subscribe({
next: (srv) => finish([...all, ...(srv.items || [])], srv.nextCursor || null),
error: () => finish(all, null),
});
},
error: () => finish(items, null),
});
return;