fix(shorts): pré-validation (clips morts, Rumble 404), autoplay Rumble, onError auto-skip, zone sous-vidéo retirée
CI / build-and-test (push) Successful in 14m16s

This commit is contained in:
2026-09-29 11:23:33 -04:00
parent f76a3795c2
commit 3f4cd56f14
3 changed files with 255 additions and 125 deletions
@@ -156,36 +156,6 @@
@if (busyMore()) {
<div class="px-3 py-1.5 rounded-full bg-black/70 text-white text-xs" role="status">Chargement…</div>
}
<!-- Navigation fine (mobile + compteur) -->
<div class="flex w-full items-center justify-between gap-3" style="max-width: 560px;">
<button type="button" (click)="prev()" [disabled]="!canPrev()"
class="chip shrink-0 rounded-lg bg-slate-800/80 px-4 py-2.5 text-white text-sm disabled:opacity-40"
aria-label="Short précédent">
<span>↑ Préc.</span>
</button>
@if (items().length > 0) {
<span class="shrink-0 text-sm tabular-nums text-slate-400" role="status" aria-live="polite">
{{ index() + 1 }} / {{ items().length }}
</span>
} @else {
<span class="shrink-0"></span>
}
<button type="button" (click)="next()" [disabled]="!canNext()"
class="chip shrink-0 rounded-lg bg-slate-800/80 px-4 py-2.5 text-white text-sm disabled:opacity-40"
aria-label="Short suivant">
<span>Suiv. ↓</span>
</button>
</div>
@if (forYou() && (topics().length > 0 || topicsLoading())) {
<p class="max-w-lg text-center text-xs text-slate-400" role="status" aria-live="polite">
@if (topicsLoading()) {
<span>Analyse de vos goûts…</span>
} @else {
<span>Sujets : {{ topics().join(' · ') }}</span>
}
</p>
}
<p class="max-w-lg text-center text-xs text-slate-500">Molette, flèches ↑ ↓ ou balayage pour zapper. Son coupé par défaut (🔇) : l'activer reprend la vidéo au début. Vidéo illisible ? Menu ⋯ → Passer.</p>
<!-- Flux infini : aucune pagination visible (compteur et boutons Préc./Suiv.
retirés) — molette, flèches ↑ ↓, balayage ou flèches latérales (bureau). -->
</div>