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 => {