From: Anton Khorev Date: Sat, 15 Mar 2025 23:05:18 +0000 (+0300) Subject: Switch from 'max_id' to 'before' parameter in history lists X-Git-Tag: live~11^2~3 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/dddb6eba3cee47e14cbafa75048f157f16a27682?ds=inline;hp=--cc Switch from 'max_id' to 'before' parameter in history lists This is to match older/newer pagination that uses 'before' and 'after' parameters. --- dddb6eba3cee47e14cbafa75048f157f16a27682 diff --git a/app/controllers/changesets_controller.rb b/app/controllers/changesets_controller.rb index d5ac49d4c..abdc23f04 100644 --- a/app/controllers/changesets_controller.rb +++ b/app/controllers/changesets_controller.rb @@ -17,12 +17,12 @@ class ChangesetsController < ApplicationController ## # list non-empty changesets in reverse chronological order def index - param! :max_id, Integer, :min => 1 + param! :before, Integer, :min => 1 - @params = params.permit(:display_name, :bbox, :friends, :nearby, :max_id, :list) + @params = params.permit(:display_name, :bbox, :friends, :nearby, :before, :list) - if request.format == :atom && @params[:max_id] - redirect_to url_for(@params.merge(:max_id => nil)), :status => :moved_permanently + if request.format == :atom && @params[:before] + redirect_to url_for(@params.merge(:before => nil)), :status => :moved_permanently return end @@ -59,7 +59,7 @@ class ChangesetsController < ApplicationController changesets = changesets.where(:user => current_user.nearby) end - changesets = changesets.where(:changesets => { :id => ..@params[:max_id] }) if @params[:max_id] + changesets = changesets.where(:changesets => { :id => ...@params[:before] }) if @params[:before] @changesets = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments) diff --git a/app/views/changesets/history.html.erb b/app/views/changesets/history.html.erb index a536677b0..8163f2e60 100644 --- a/app/views/changesets/history.html.erb +++ b/app/views/changesets/history.html.erb @@ -1,6 +1,6 @@ <% content_for :auto_discovery_link_tag do -%> <% unless params[:friends] or params[:nearby] -%> - <%= auto_discovery_link_tag :atom, @params.to_h.merge(:max_id => nil, :xhr => nil, :action => :feed) %> + <%= auto_discovery_link_tag :atom, @params.to_h.merge(:before => nil, :xhr => nil, :action => :feed) %> <% end -%> <% end -%> diff --git a/app/views/changesets/index.html.erb b/app/views/changesets/index.html.erb index fc5f7cbbc..85c5f0bcb 100644 --- a/app/views/changesets/index.html.erb +++ b/app/views/changesets/index.html.erb @@ -4,7 +4,7 @@ <% if @changesets.size == 20 -%>
- <%= link_to t(".load_more"), url_for(@params.merge(:max_id => @changesets.last.id - 1)), :class => "btn btn-primary" %> + <%= link_to t(".load_more"), url_for(@params.merge(:before => @changesets.last.id)), :class => "btn btn-primary" %>
<%= t("browse.start_rjs.loading") %> @@ -13,9 +13,9 @@
<% end -%> <% elsif params[:bbox] %> -

<%= params[:max_id] ? t(".no_more_area") : t(".empty_area") %>

+

<%= params[:before] ? t(".no_more_area") : t(".empty_area") %>

<% elsif params[:display_name] %> -

<%= params[:max_id] ? t(".no_more_user") : t(".empty_user") %>

+

<%= params[:before] ? t(".no_more_user") : t(".empty_user") %>

<% else %> -

<%= params[:max_id] ? t(".no_more") : t(".empty") %>

+

<%= params[:before] ? t(".no_more") : t(".empty") %>

<% end %> diff --git a/test/controllers/changesets_controller_test.rb b/test/controllers/changesets_controller_test.rb index 2e701f248..4274f7c31 100644 --- a/test/controllers/changesets_controller_test.rb +++ b/test/controllers/changesets_controller_test.rb @@ -80,7 +80,7 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest # This should report an error def test_index_invalid_xhr %w[-1 0 fred].each do |id| - get history_path(:format => "html", :list => "1", :max_id => id) + get history_path(:format => "html", :list => "1", :before => id) assert_redirected_to :controller => :errors, :action => :bad_request end end @@ -221,21 +221,21 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest ## # Check that we can't request later pages of the changesets index - def test_index_max_id - changeset = create(:changeset, :num_changes => 1) - _changeset2 = create(:changeset, :num_changes => 1) + def test_index_before_id + changeset1 = create(:changeset, :num_changes => 1) + changeset2 = create(:changeset, :num_changes => 1) - get history_path(:format => "html", :max_id => changeset.id), :xhr => true + get history_path(:format => "html", :before => changeset2.id), :xhr => true assert_response :success assert_template "history" assert_template :layout => "xhr" assert_select "h2", :text => "Changesets", :count => 1 - get history_path(:format => "html", :list => "1", :max_id => changeset.id), :xhr => true + get history_path(:format => "html", :list => "1", :before => changeset2.id), :xhr => true assert_response :success assert_template "index" - check_index_result([changeset]) + check_index_result [changeset1] end ## @@ -411,8 +411,8 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest ## # Check that we can't request later pages of the changesets feed - def test_feed_max_id - get history_feed_path(:format => "atom", :max_id => 100) + def test_feed_before + get history_feed_path(:format => "atom", :before => 100) assert_redirected_to :action => :feed end