Sockets allowing for live updates rather than complete rebuilds #7

Merged
kristy-fournier merged 20 commits from timerChanges into main 2026-02-11 09:39:36 -05:00
3 changed files with 23 additions and 10 deletions
Showing only changes of commit 566ce9cd73 - Show all commits

View file

@ -104,7 +104,7 @@ changes visibility with JS-->
<input type="checkbox" title="playpausecheck" id="playpausesettingcheckbox"><label for="playpausesettingcheckbox">Play/pause</label><br>
<input type="checkbox" title="partymodecheck" id="partymodesettingcheckbox"><label for="partymodesettingcheckbox">Toggle Party Mode</label><br>
<input type="checkbox" title="volumechangecheck" id="volumechangesettingcheckbox"><label for="volumechangesettingcheckbox">Change volume</label><br>
<input type="checkbox" title="duplicateallowcheck" id="duplicateallowesettingcheckbox"><label for="duplicateallowsettingcheck">Allow Duplicates</label><br>
<input type="checkbox" title="duplicateallowcheck" id="duplicateallowesettingcheckbox"><label for="duplicateallowsettingcheck">Add duplicate songs</label><br>
</div>
</div>

View file

@ -299,11 +299,17 @@ async function displayElapsedPlaylistTime(elapsed=0,length=-1) {
async function updateSingleSetting(data) {
let toBeChanged = data["settingToChange"];
if (toBeChanged === "partymode") {
document.getElementById("partymode-button").textContent = data["newData"];
} else if (toBeChanged === "perms") {
let currentAdminPerms = data["newData"];
document.getElementById("addsongsettingcheckbox").checked = currentAdminPerms["AS"];
document.getElementById("skipsongsettingcheckbox").checked = currentAdminPerms["SK"];
document.getElementById("playpausesettingcheckbox").checked = currentAdminPerms["PP"];
document.getElementById("partymodesettingcheckbox").checked = currentAdminPerms["PM"];
document.getElementById("volumechangesettingcheckbox").checked = currentAdminPerms["VOL"];
document.getElementById("duplicateallowesettingcheckbox").checked = currentAdminPerms["DUP"];
} else if (toBeChanged === "volume") {
document.getElementById("volumerange").value = data["newData"];
}
}
@ -608,9 +614,10 @@ document.addEventListener('keydown', function(e){
}})
copilot-pull-request-reviewer[bot] commented 2026-02-11 09:28:35 -05:00 (Migrated from github.com)

Leftover debug logging (console.log(e)) in the volume slider handler will spam the console on every change. Remove this (or gate it behind a debug flag) before merging.

Leftover debug logging (`console.log(e)`) in the volume slider handler will spam the console on every change. Remove this (or gate it behind a debug flag) before merging.
document.getElementById("playlist-mode").style.display = "none";
document.getElementById("settings-mode").style.display = "none";
document.getElementById("volumerange").onchange = async function() {
document.getElementById("volumerange").onchange = async function(e) {
// there is no reason for this not to be a defined function
// FIX THIS
console.log(e);
let returnValue = await getFromServer({setting:"volume",level:this.value}, "settings")
if (returnValue["status"] == ERR_NO_ADMIN) {
// alertText("Error: Admin restricted action");
@ -716,6 +723,7 @@ socket.on("settingsChange",(data) => {
console.log("working");
justChangedSetting = false;
} else {
checkSettings();
// checkSettings();
updateSingleSetting(data);
}
});

View file

@ -190,8 +190,12 @@ def settingsControl():
volumeLevel = int(recieveData["level"])
if(volumeLevel <= 100 and volumeLevel >= 0):
volumePassed = player.audio_set_volume(volumeLevel)
socketio.emit("settingsChange")
if(volumePassed == 0):
# only emit a signal i the volume really changed
socketio.emit("settingsChange",{"settingToChange":"volume","newData":volumeLevel})
return {"error":"ok","data":{"volumePassed":volumePassed}},200
else:
return {"error":"VLC cannot take volume change requests at this time","data":None},500
else:
return {"error":"Invalid volume level","data":None},422
else:
@ -199,15 +203,16 @@ def settingsControl():
elif recieveData["setting"] == "partymode-toggle":
if ADMIN_PASS == recieveData['password'] or controlPerms["PM"]:
partyMode = not(partyMode)
socketio.emit("settingsChange")
partyModeStr = "On" if partyMode else "Off"
socketio.emit("settingsChange",{"settingToChange":"partymode","newData":partyModeStr})
return ERR_200
else:
return ERR_NO_ADMIN
elif recieveData["setting"] == "perms":
if ADMIN_PASS == recieveData["password"]:
socketio.emit("settingsChange")
controlPerms = recieveData["admin"]
# print(recieveData["admin"])
socketio.emit("settingsChange",{"settingToChange":"perms","newData":controlPerms})
return ERR_200
else:
return ERR_NO_ADMIN