From 981d56c97c08d6a04e8566f11e64d4293ee1e724 Mon Sep 17 00:00:00 2001 From: evazion Date: Thu, 18 Feb 2021 19:01:45 -0600 Subject: [PATCH] paginator: fix switching to sequential pagination. Fix a bug where the paginator didn't correctly switch to sequential pagination when reaching the page limit. --- app/components/paginator_component.rb | 2 +- app/logical/pagination_extension.rb | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/components/paginator_component.rb b/app/components/paginator_component.rb index aa02bae5c..f1a87727f 100644 --- a/app/components/paginator_component.rb +++ b/app/components/paginator_component.rb @@ -12,7 +12,7 @@ class PaginatorComponent < ApplicationComponent end def use_sequential_paginator? - paginator_mode != :numbered || current_page >= paginator_page_limit + paginator_mode != :numbered end def pages diff --git a/app/logical/pagination_extension.rb b/app/logical/pagination_extension.rb index ce63b3790..7bc91c4a0 100644 --- a/app/logical/pagination_extension.rb +++ b/app/logical/pagination_extension.rb @@ -20,10 +20,14 @@ module PaginationExtension elsif page.to_s =~ /\Aa(\d+)\z/i @paginator_mode = :sequential_after paginate_sequential_after($1, records_per_page) + elsif page.to_i > page_limit + raise PaginationError + elsif page.to_i == page_limit + @paginator_mode = :sequential_after + paginate_numbered(page.to_i, records_per_page) else @paginator_mode = :numbered @current_page = [page.to_i, 1].max - raise PaginationError if current_page > page_limit paginate_numbered(current_page, records_per_page) end