Changeset 73cffc3 in Klonkt for src/assets/js/audio-player.js


Ignore:
Timestamp:
06/28/2026 10:47:29 AM (2 months ago)
Author:
Robin Genis <roboburr@…>
Branches:
main
Children:
2eca083
Parents:
515cf1a
Message:

feat(player): remember volume + mute across sessions (localStorage)

The audio player reset to 80% on every load. It now restores the last volume and mute state
from localStorage (pcmsVolume/pcmsMuted) and saves on every change.

  • assets/js/audio-player.js — read/write pcmsVolume + pcmsMuted on load + input/mute
  • views/shell.ejs — bump audio-player.js cache buster to v31
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/audio-player.js

    r515cf1a r73cffc3  
    560560  attachSeek(sheetSeek);
    561561
    562   audio.volume = 0.8;
     562  // Volume + mute persist across sessions/pages via localStorage.
     563  const VOL_KEY = 'pcmsVolume', MUTE_KEY = 'pcmsMuted';
     564  const saveVol = () => { try { localStorage.setItem(VOL_KEY, String(audio.volume)); localStorage.setItem(MUTE_KEY, audio.muted ? '1' : '0'); } catch (e) { /* private mode */ } };
     565  let _initVol = parseFloat(localStorage.getItem(VOL_KEY));
     566  if (!isFinite(_initVol) || _initVol < 0 || _initVol > 1) _initVol = 0.8;
     567  audio.volume = _initVol;
     568  volumeSlider.value = Math.round(_initVol * 100);
     569  if (localStorage.getItem(MUTE_KEY) === '1') audio.muted = true;
     570  root.classList.toggle('is-muted', audio.muted || audio.volume === 0);
    563571  volumeSlider.addEventListener('input', () => {
    564572    audio.volume = volumeSlider.value / 100;
    565573    if (volumeSlider.value > 0) audio.muted = false;
    566   });
    567   muteBtn.addEventListener('click', () => { audio.muted = !audio.muted; });
     574    saveVol();
     575  });
     576  muteBtn.addEventListener('click', () => { audio.muted = !audio.muted; saveVol(); });
    568577
    569578  // ============================================================
Note: See TracChangeset for help on using the changeset viewer.