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;";