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