Block repeated on while auto-off is active
This commit is contained in:
@@ -100,6 +100,39 @@ async function handleRefreshSubmit(form, event) {
|
||||
}
|
||||
}
|
||||
|
||||
function refreshSnapshot(button) {
|
||||
if (button.classList.contains("is-refreshing")) {
|
||||
return;
|
||||
}
|
||||
const media = button.closest(".media");
|
||||
const image = media?.querySelector("img.snapshot");
|
||||
if (!image) {
|
||||
return;
|
||||
}
|
||||
const url = new URL(image.currentSrc || image.src, window.location.href);
|
||||
url.searchParams.set("refresh", "1");
|
||||
url.searchParams.set("v", String(Date.now()));
|
||||
const cleanup = () => {
|
||||
button.disabled = false;
|
||||
button.classList.remove("is-refreshing");
|
||||
button.removeAttribute("aria-busy");
|
||||
};
|
||||
button.disabled = true;
|
||||
button.classList.add("is-refreshing");
|
||||
button.setAttribute("aria-busy", "true");
|
||||
image.addEventListener("load", cleanup, { once: true });
|
||||
image.addEventListener("error", cleanup, { once: true });
|
||||
image.src = url.toString();
|
||||
}
|
||||
|
||||
document.addEventListener("click", (event) => {
|
||||
const button = event.target.closest(".snapshot-refresh");
|
||||
if (!(button instanceof HTMLButtonElement)) {
|
||||
return;
|
||||
}
|
||||
refreshSnapshot(button);
|
||||
});
|
||||
|
||||
document.addEventListener("submit", (event) => {
|
||||
const form = event.target;
|
||||
if (!(form instanceof HTMLFormElement)) {
|
||||
|
||||
Reference in New Issue
Block a user