stream: add a whole-station restart of the current track
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Wire the Media Session previous-track control to a new POST /restart-track route that requeues the current song from the start for every listener, and keep next-track as skip. Exposing both handlers also makes Android (Chrome) show the skip button, which it hides when only nexttrack is set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
622210197f
commit
96a1ba89e6
2 changed files with 45 additions and 5 deletions
|
|
@ -245,9 +245,17 @@
|
|||
safe(() => media.setActionHandler("play", () => player.play().catch(() => {})));
|
||||
safe(() => media.setActionHandler("pause", () => player.pause()));
|
||||
safe(() => media.setActionHandler("stop", () => player.pause()));
|
||||
// Pas de reprise possible sur un direct : « précédent » comme « suivant »
|
||||
// passent au morceau suivant côté serveur.
|
||||
// « Suivant » saute le morceau courant. « Précédent » le rejoue depuis le
|
||||
// début, pour toute l'antenne (flux partagé, pas de position par
|
||||
// auditeur). Brancher les deux est aussi nécessaire sous Android (Chrome),
|
||||
// qui traite précédent/suivant comme une paire et masque le bouton suivant
|
||||
// si seul « nexttrack » est défini.
|
||||
safe(() => media.setActionHandler("nexttrack", () => { skipBtn.click(); }));
|
||||
safe(() => media.setActionHandler("previoustrack", () => {
|
||||
fetch("/restart-track", { method: "POST" })
|
||||
.then(() => setTimeout(() => { poll(); pollHistory(); }, 900))
|
||||
.catch(() => {});
|
||||
}));
|
||||
// Le direct n'est pas déplaçable : on neutralise les actions de seek pour
|
||||
// éviter que le système n'affiche des boutons d'avance/recul inopérants.
|
||||
safe(() => media.setActionHandler("seekbackward", null));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue