diff --git a/modules/active_modifier.py b/modules/active_modifier.py index ff3bfaa..e6d7a26 100644 --- a/modules/active_modifier.py +++ b/modules/active_modifier.py @@ -173,12 +173,10 @@ class Module(ActiveModifier): self.skip_next = max(self.skip_next, 0) return {"status": "ok", "data": self.skip_next} elif data.get("action") == "skipi": - idx = data.get("target") - if not idx or not isinstance(idx, int): return {"status": "data", "data": list(self.skip_indexes)} - self.skip_indexes.add(idx) + if (add := data.get("add")) and isinstance(add, int): self.skip_indexes.add(add) + if (remove := data.get("remove")) is not None and isinstance(remove, int) and remove in self.skip_indexes: self.skip_indexes.remove(remove) return {"status": "ok", "data": list(self.skip_indexes)} - activemod = Module() # This is free and unencumbered software released into the public domain. diff --git a/modules/web/index.html b/modules/web/index.html index 794c93e..aaff119 100644 --- a/modules/web/index.html +++ b/modules/web/index.html @@ -199,6 +199,7 @@ + diff --git a/modules/web/web.js b/modules/web/web.js index 541b17b..a0298d1 100644 --- a/modules/web/web.js +++ b/modules/web/web.js @@ -257,6 +257,14 @@ document.getElementById("jingle-btn").addEventListener("contextmenu", (e) => { }); document.getElementById("clear-btn").addEventListener("click", () => ws.send(JSON.stringify({action:"clear_toplay"}))); +document.getElementById("skipidx-btn").addEventListener("click", () => { + if (selectedPlaylistIndex == null) return; + const action = skipped_idx.includes(selectedPlaylistIndex) + ? { action: "skipi", remove: selectedPlaylistIndex } + : { action: "skipi", add: selectedPlaylistIndex }; + ws.send(JSON.stringify(action)); +}); + function addSelectedFileToQueue(top) { let fullPath = null; let success = false; @@ -284,6 +292,21 @@ document.getElementById("add-to-queue2-btn").addEventListener("click", () => add function updateControls() { document.getElementById("clear-btn").disabled = Queue.length === 0; + + const btn = document.getElementById("skipidx-btn"); + if (selectedPlaylistIndex == null) { + btn.textContent = "⏭+ Skip idx"; + btn.disabled = true; + btn.classList.remove("activated"); + } else if (skipped_idx.includes(selectedPlaylistIndex)) { + btn.textContent = "✓ Unskip idx"; + btn.disabled = false; + btn.classList.add("activated"); + } else { + btn.textContent = "⏭+ Skip idx"; + btn.disabled = false; + btn.classList.remove("activated"); + } } document.addEventListener("keydown", e => {