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() {