@@ -146,6 +145,7 @@
Passer (vidéo illisible)
+ @if (current(); as v) {
diff --git a/src/components/shorts/watch-short.component.ts b/src/components/shorts/watch-short.component.ts
index a885d1d..d350e4e 100644
--- a/src/components/shorts/watch-short.component.ts
+++ b/src/components/shorts/watch-short.component.ts
@@ -1492,6 +1492,16 @@ export class WatchShortComponent implements OnDestroy {
return;
}
const provider = this.provider();
+ // Rumble : on va droit au chemin historique (flux natif rumble.com/shorts
+ // + remplissage recherche). Le catalogue `type=shorts` ne rend que des
+ // vidéos <=75 s HORizontales (Rumble n'expose aucune dimension : ni largeur
+ // ni hauteur dans les pages, vignettes en crop fixe 16:9 — vérifié 9/9),
+ // ce qui donnait un feed de « briques » 16:9 au lieu des shorts officiels.
+ if (provider === 'rumble') {
+ this.catalogActive = false;
+ this.loadLegacyFeed();
+ return;
+ }
// Shorts via le CATALOGUE d'abord (`/api/search?type=shorts` : cache,
// provenance, feature-flags). Twitch garde son flux de clips historique
// (pas d'équivalent catalogue : la recherche serveur renvoie des VOD).
@@ -1646,8 +1656,12 @@ export class WatchShortComponent implements OnDestroy {
const raw = (res.items || []).filter(v => !!v.videoId);
this.nextCursor.set(res.nextCursor || null);
if (!res.nextCursor) this.exhaustedQueries.add(this.currentQuery());
+ // NOTE : `list` est DÉJÀ dédupliqué par chaque appelant (ligne 1671 /
+ // branche YouTube). Un second passage ici marquait tout comme « déjà vu »
+ // et posait une liste VIDE en silence — écran « Aucun short » sans erreur
+ // ni requête suivante (bug reproduit au navigateur, fix racine).
const show = (list: Video[]) => {
- const deduped = this.dedup(list);
+ const deduped = list;
this.items.set(deduped);
this.index.set(0);
this.error.set(null);