diff --git a/app/javascript/application.js b/app/javascript/application.js
index 0f7c5bcff..f932c174a 100644
--- a/app/javascript/application.js
+++ b/app/javascript/application.js
@@ -69,8 +69,6 @@ import HistoryBack from './elements/history_back'
import DatePlaceholder from './elements/date_placeholder'
import FlashMessage from './elements/flash_message'
-
-
document.addEventListener('turbo:before-cache', () => {
window.flash?.remove()
})
@@ -99,6 +97,16 @@ if (window.webkit?.messageHandlers?.native) {
}
})
+ document.addEventListener('turbo:before-fetch-request', (event) => {
+ const { session } = window.Turbo
+ const visit = session.navigator.currentVisit
+ const limit = document.getElementById('infinite_scroll')?.dataset.limit
+
+ if (limit && window.scrollY > 0 && event.target === document.documentElement && visit?.location.href === session.view.lastRenderedLocation.href && session.view.isPageRefresh(visit)) {
+ event.detail.url.searchParams.set('limit', limit)
+ }
+ })
+
document.addEventListener('turbo:visit', (e) => {
isRestoring = e.detail.action === 'restore'
})
diff --git a/app/javascript/elements/infinite_scroll.js b/app/javascript/elements/infinite_scroll.js
index 1e0ecee92..e45466da0 100644
--- a/app/javascript/elements/infinite_scroll.js
+++ b/app/javascript/elements/infinite_scroll.js
@@ -2,11 +2,7 @@ import { renderStreamMessage } from '@hotwired/turbo'
export default class extends HTMLElement {
connectedCallback () {
- if (!this.dataset.src) {
- this.remove()
-
- return
- }
+ if (!this.dataset.src) return
this.observer = new IntersectionObserver((entries) => {
if (entries.some((entry) => entry.isIntersecting)) {
diff --git a/app/views/shared/_infinite_scroll.html.erb b/app/views/shared/_infinite_scroll.html.erb
index 4161f5e7a..6cc99fb3d 100644
--- a/app/views/shared/_infinite_scroll.html.erb
+++ b/app/views/shared/_infinite_scroll.html.erb
@@ -1,5 +1,3 @@
-<% if pagy.next || pagy.page > 1 %>
-
- <%= svg_icon('loader', class: 'w-6 h-6 animate-spin') %>
-
-<% end %>
+
+ <%= svg_icon('loader', class: 'w-6 h-6 animate-spin') if pagy.next %>
+
diff --git a/config/initializers/pagy.rb b/config/initializers/pagy.rb
index df17acded..ab4dab056 100644
--- a/config/initializers/pagy.rb
+++ b/config/initializers/pagy.rb
@@ -1,3 +1,4 @@
# frozen_string_literal: true
Pagy::OPTIONS[:limit] = 10
+Pagy::OPTIONS[:max_limit] = 200