diff --git a/templates/radio/stream_player.html b/templates/radio/stream_player.html index 6b270d1..7c80b9a 100644 --- a/templates/radio/stream_player.html +++ b/templates/radio/stream_player.html @@ -118,22 +118,28 @@ function startPlay() { audio.src = streamUrl; setVol(parseInt(slider.value, 10)); - audio.play().catch(() => {}); - playing = true; - playBtn.innerHTML = '▮▮ Stop'; + audio.play().then(() => { + playing = true; + playBtn.innerHTML = '▮▮ Stop'; - // SSE metadata - if (sse) sse.close(); - sse = new EventSource('/radio/sse/?url=' + encodeURIComponent(streamUrl)); - sse.onmessage = e => { - try { - const data = JSON.parse(e.data); - if (data.track) { - document.getElementById('track-name').textContent = data.track; - document.title = data.track + ' — ' + stationName; - } - } catch (_) {} - }; + if (sse) sse.close(); + sse = new EventSource('/radio/sse/?url=' + encodeURIComponent(streamUrl)); + sse.onmessage = e => { + try { + const data = JSON.parse(e.data); + if (data.track) { + document.getElementById('track-name').textContent = data.track; + document.title = data.track + ' — ' + stationName; + } + } catch (_) {} + }; + }).catch(() => { + // Autoplay blocked — reset state, prompt user to click + playing = false; + audio.src = ''; + playBtn.innerHTML = '▶ Play'; + document.getElementById('track-name').textContent = 'Click Play to start'; + }); } function stopPlay() {