From 790e12c6b3daecceec23b106e8883b10c24f175c Mon Sep 17 00:00:00 2001 From: uwaa Date: Fri, 21 Feb 2025 02:39:26 +0000 Subject: [PATCH] rot stability --- static/rot/rot.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/static/rot/rot.js b/static/rot/rot.js index af1f445a..cb1ef95d 100644 --- a/static/rot/rot.js +++ b/static/rot/rot.js @@ -23,27 +23,32 @@ //Music functions function setMusic(url) { - audio.pause(); - - silent = !url; + noMusic = !url; if (url) { - console.log("Setting music: " + url); - audio.src = url; + if (audio.src !== url && audio.src !== new URL(url, document.baseURI).href) { + console.log("Setting music: " + url); + audio.pause(); + audio.src = url; + } playMusic(); } else { - console.log("Silencing"); + audio.pause(); } } function playMusic() { //Starts playing the music if it isn't muted and isn't already playing try { - if (!silent && audio.src && audio.src != "" && audio.paused && !audio.muted) { + if (audio && !noMusic && !audio.muted && audio.paused) { + console.log("Playing music"); + audio.pause(); audio.currentTime = 0; - audio.play().catch(() => getPromiseFromEvent(window, 'click').then(audio.play)); + audio.load(); + audio.play().catch(() => getPromiseFromEvent(window, 'click').then(playMusic)); } } catch { console.log("Failed to play music"); + noMusic = true; } } @@ -102,26 +107,22 @@ //Theme application function applyMainTheme() { - console.log("Applying main theme"); setMusic(null); // waitUntilSpecial('meta[name="pageMusic"]', (pageMusic) => { setMusic(pageMusic.content); - playMusic(); return true; }); // waitUntilSpecial("#pageMusic", (pageMusic) => { setMusic(pageMusic.getAttribute("href")); - playMusic(); return true; }); } function applyUserTheme() { - console.log("Applying user theme"); setMusic(null); //Configure by post @@ -239,7 +240,7 @@ //Rot music player const audio = document.createElement("audio"); - let silent = false; + let noMusic = true; audio.loop = true; audio.id = "user-music"; audio.style = "display:none;";