1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(() => {
const handleClick = async (event) => {
const btn = event.target.closest(".hook-toggle");
if (!btn) {
return;
}
event.preventDefault();
const project = btn.dataset.project;
const sample = btn.dataset.sample;
const op = btn.dataset.op;
if (!project || !sample || !op) {
return;
}
btn.disabled = true;
const params = new URLSearchParams({ name: sample, op });
try {
const resp = await fetch(`/project/${project}/hook?${params.toString()}`, {
method: "POST",
headers: { Accept: "application/json" },
});
if (!resp.ok) {
const detail = await resp.text();
window.alert(`Hook ${op} failed (${resp.status}): ${detail}`);
btn.disabled = false;
return;
}
window.location.reload();
} catch (err) {
window.alert(`Hook ${op} failed: ${err}`);
btn.disabled = false;
}
};
document.addEventListener("click", handleClick);
})();