Files
linkding/bookmarks/frontend/behaviors/fetch.js
Sascha Ißbrücker 65f0eb2a04 Refactor client-side fetch logic (#693)
* extract generic behaviors

* preserve query string when refreshing content

* refactor details modal refresh

* refactor bulk edit

* update tests

* restore tag modal

* Make IntelliJ aware of custom attributes

* improve e2e test coverage
2024-04-11 19:07:20 +02:00

26 lines
745 B
JavaScript

import { fireEvents, registerBehavior, swap } from "./index";
class FetchBehavior {
constructor(element) {
this.element = element;
const eventName = element.getAttribute("ld-on");
element.addEventListener(eventName, this.onFetch.bind(this));
}
async onFetch(event) {
event.preventDefault();
const url = this.element.getAttribute("ld-fetch");
const html = await fetch(url).then((response) => response.text());
const target = this.element.getAttribute("ld-target");
const select = this.element.getAttribute("ld-select");
swap(this.element, html, { target, select });
const events = this.element.getAttribute("ld-fire");
fireEvents(events);
}
}
registerBehavior("ld-fetch", FetchBehavior);