Refresh file list when there are queued snapshots (#697)

* add destroy hook

* refresh details modal in interval

* refactor to refresh assets list

* disable create snapshot button when there is a pending snapshot
This commit is contained in:
Sascha Ißbrücker
2024-04-14 14:41:22 +02:00
committed by GitHub
parent df9f0095cc
commit 1b7731e506
16 changed files with 267 additions and 85 deletions

View File

@@ -1,15 +1,31 @@
import { fireEvents, registerBehavior, swap } from "./index";
import { Behavior, fireEvents, registerBehavior, swap } from "./index";
class FetchBehavior {
class FetchBehavior extends Behavior {
constructor(element) {
this.element = element;
const eventName = element.getAttribute("ld-on");
super(element);
element.addEventListener(eventName, this.onFetch.bind(this));
const eventName = element.getAttribute("ld-on");
const interval = parseInt(element.getAttribute("ld-interval")) * 1000;
this.onFetch = this.onFetch.bind(this);
this.onInterval = this.onInterval.bind(this);
element.addEventListener(eventName, this.onFetch);
if (interval) {
this.intervalId = setInterval(this.onInterval, interval);
}
}
async onFetch(event) {
event.preventDefault();
destroy() {
if (this.intervalId) {
clearInterval(this.intervalId);
}
}
async onFetch(maybeEvent) {
if (maybeEvent) {
maybeEvent.preventDefault();
}
const url = this.element.getAttribute("ld-fetch");
const html = await fetch(url).then((response) => response.text());
@@ -20,6 +36,13 @@ class FetchBehavior {
const events = this.element.getAttribute("ld-fire");
fireEvents(events);
}
onInterval() {
if (Behavior.interacting) {
return;
}
this.onFetch();
}
}
registerBehavior("ld-fetch", FetchBehavior);