From 691e4282406b7a71c67bfda186f67861be52d04a Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Tue, 10 Mar 2026 16:23:33 +0100 Subject: [PATCH] better stream support --- src/main/resources/web/assets/app.js | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/resources/web/assets/app.js b/src/main/resources/web/assets/app.js index c26b6ed..8d1af0c 100644 --- a/src/main/resources/web/assets/app.js +++ b/src/main/resources/web/assets/app.js @@ -257,7 +257,15 @@ function bindPlayerEvents() { el.player.addEventListener("error", () => { - setSettingsMessage("Playback failed in embedded player. Try Open stream directly.", "err"); + const systemPlayerUrl = state.currentStreamInfo ? buildSystemPlayerHref(state.currentStreamInfo?.title, state.currentStreamInfo?.url, state.currentStreamInfo) : ""; + if (systemPlayerUrl) { + setSettingsMessageHtml( + `Playback failed in embedded player. Open stream directly`, + "err" + ); + } else { + setSettingsMessage("Playback failed in embedded player. Try Open stream directly.", "err"); + } }); el.player.addEventListener("loadedmetadata", updateStreamRuntimeInfo); el.player.addEventListener("loadedmetadata", refreshEmbeddedSubtitleTracks); @@ -2488,7 +2496,11 @@ return; } disposeHls(); - setSettingsMessage("HLS playback failed in embedded player. Try Open stream directly.", "err"); + const systemPlayerUrl = buildSystemPlayerHref(state.currentStreamInfo?.title, state.currentStreamInfo?.url, state.currentStreamInfo); + setSettingsMessageHtml( + `HLS playback failed in embedded player. Open stream directly`, + "err" + ); if (state.currentStreamInfo) { state.currentStreamInfo.playbackEngine = "native (HLS fallback failed)"; renderStreamInfo(); @@ -2504,8 +2516,9 @@ if (error?.name === "NotAllowedError") { return; } - setSettingsMessage( - `Playback could not start in embedded player: ${error?.message || "unknown error"}`, + const systemPlayerUrl = buildSystemPlayerHref(state.currentStreamInfo?.title, state.currentStreamInfo?.url, state.currentStreamInfo); + setSettingsMessageHtml( + `Playback failed in embedded player. Open in system player`, "err" ); }); @@ -3158,6 +3171,11 @@ el.settingsMessage.className = `message ${type}`.trim(); } + function setSettingsMessageHtml(html, type = "") { + el.settingsMessage.innerHTML = html || ""; + el.settingsMessage.className = `message ${type}`.trim(); + } + function showError(error) { setSettingsMessage(error.message || String(error), "err"); }