diff --git a/assets/leaderboard.js b/assets/leaderboard.js index a118167..f6e6ae3 100644 --- a/assets/leaderboard.js +++ b/assets/leaderboard.js @@ -11,46 +11,47 @@ const lbMusicBtn = document.getElementById("lbMusicBtn"); const lbAudio = document.getElementById("lbAudio"); if (lbMusicBtn && lbAudio) { - - // 1. Cek 'memori' browser (localStorage). - // Kalau belum pernah diset (null), anggap "on" (default). + lbAudio.loop = true; const savedState = localStorage.getItem("musicState"); let isLbPlaying = savedState === null ? true : (savedState === "on"); - - // 2. Fungsi untuk Update Tampilan & Audio sesuai status + const updateMusicState = () => { if (isLbPlaying) { - // Coba play lbAudio.play().then(() => { lbMusicBtn.innerHTML = "🔊"; }).catch(error => { - console.log("Autoplay dicegah browser, perlu interaksi."); - // Kalau diblokir browser, paksa status jadi off di tampilan - lbMusicBtn.innerHTML = "🔇"; - isLbPlaying = false; - localStorage.setItem("musicState", "off"); + console.log("Autoplay dicegah, menunggu interaksi user..."); + lbMusicBtn.innerHTML = "🔇"; + + const enableAudioOnInteraction = () => { + lbAudio.play().then(() => { + lbMusicBtn.innerHTML = "🔊"; + }); + document.removeEventListener('click', enableAudioOnInteraction); + document.removeEventListener('touchstart', enableAudioOnInteraction); + }; + + document.addEventListener('click', enableAudioOnInteraction); + document.addEventListener('touchstart', enableAudioOnInteraction); }); } else { - // Pause lbAudio.pause(); lbMusicBtn.innerHTML = "🔇"; } }; - // 3. Jalankan pengecekan awal saat halaman/filter dimuat updateMusicState(); - // 4. Event Listener Tombol - lbMusicBtn.addEventListener("click", () => { + lbMusicBtn.addEventListener("click", (e) => { + e.stopPropagation(); + if (isLbPlaying) { - // User mau mematikan isLbPlaying = false; - localStorage.setItem("musicState", "off"); // Simpan ke memori "off" + localStorage.setItem("musicState", "off"); } else { - // User mau menyalakan isLbPlaying = true; - localStorage.setItem("musicState", "on"); // Simpan ke memori "on" + localStorage.setItem("musicState", "on"); } - updateMusicState(); // Terapkan perubahan + updateMusicState(); }); } \ No newline at end of file