()
| 1410 | } |
| 1411 | |
| 1412 | function wireCatalogRailViews() { |
| 1413 | document.querySelector(".rail-library")?.addEventListener("click", () => setCatalogView("library")); |
| 1414 | document.querySelector(".rail-favorites")?.addEventListener("click", () => setCatalogView("favorites")); |
| 1415 | document.querySelector(".rail-trash")?.addEventListener("click", () => setCatalogView("trash")); |
| 1416 | document.getElementById("clearBinBtn")?.addEventListener("click", () => { |
| 1417 | const trash = getTrashFolder(); |
| 1418 | const toDelete = [...(trash?.items || [])]; |
| 1419 | markJobsDeleted(toDelete); // persist before purge so reload can't re-import |
| 1420 | purgeTrash(); |
| 1421 | saveState(); |
| 1422 | render(); |
| 1423 | for (const id of toDelete) { |
| 1424 | fetch(`/api/jobs/${id}`, { method: "DELETE" }).catch(() => {}); |
| 1425 | } |
| 1426 | }); |
| 1427 | } |
| 1428 | |
| 1429 | function wireCatalogSearch() { |
| 1430 | const input = document.getElementById("catalogSearch"); |
no test coverage detected