From 2585b4fd7c42303410c81125ccc09479e9501041 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Mon, 16 Dec 2024 03:31:00 +0200 Subject: [PATCH] fix: Pagy::OverflowError (#3528) * fix: pagy overflow when reset filters * fix: Pagy::OverflowError * revert page 1 on filters reset --- lib/avo/concerns/pagination.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/avo/concerns/pagination.rb b/lib/avo/concerns/pagination.rb index 33b48ac06..784ac8a1f 100644 --- a/lib/avo/concerns/pagination.rb +++ b/lib/avo/concerns/pagination.rb @@ -37,6 +37,18 @@ def apply_pagination(index_params:, query:, **args) data_turbo_frame = "data-turbo-frame=\"#{CGI.escapeHTML(params[:turbo_frame]) if params[:turbo_frame]}\"" + # Perform pagination and fallback to first page on Pagy::OverflowError + begin + perform_pagination(index_params:, query:, data_turbo_frame:, extra_pagy_params:, **args) + rescue Pagy::OverflowError + index_params[:page] = 1 + perform_pagination(index_params:, query:, data_turbo_frame:, extra_pagy_params:, **args) + end + end + + private + + def perform_pagination(index_params:, query:, data_turbo_frame:, extra_pagy_params:, **args) send PAGINATION_METHOD[pagination_type.to_sym], query, **args, @@ -49,8 +61,6 @@ def apply_pagination(index_params:, query:, **args) size: pagination_hash[:size] end - private - def pagination_hash @pagination ||= PAGINATION_DEFAULTS.merge(Avo.configuration.pagination).merge Avo::ExecutionContext.new( target: pagination,