diff --git a/src/site/html/static/js/pagination.js b/src/site/html/static/js/pagination.js index f0cef05..59745dd 100644 --- a/src/site/html/static/js/pagination.js +++ b/src/site/html/static/js/pagination.js @@ -29,8 +29,25 @@ class NextPage extends FreezeWidth { onClick(event) { if (event) event.preventDefault() - if (this.clicked) return - this.clicked = true + if (this.fetching) return + this.class("clicked") + this.fetch() + } + + /** + * @param {IntersectionObserverEntry[]} entries + */ + onIntersect(entries) { + if (entries.some(entry => entry.isIntersecting && entry.intersectionRatio >= intersectionThreshold)) { + if (this.fetching) return + this.class("disabled") + this.fetch() + } + } + + fetch() { + if (this.fetching) return + this.fetching = true this.freeze("Loading...") fetch(`/fragment/user/${this.element.getAttribute("data-username")}/${this.nextPageNumber}`).then(res => res.text()).then(text => { @@ -40,13 +57,6 @@ class NextPage extends FreezeWidth { addNextPageControl() }) } - - /** - * @param {IntersectionObserverEntry[]} entries - */ - onIntersect(entries) { - if (entries.some(entry => entry.isIntersecting && entry.intersectionRatio >= intersectionThreshold)) this.onClick() - } } function addNextPageControl() {