]> git.openstreetmap.org Git - rails.git/commitdiff
Switch from 'max_id' to 'before' parameter in history lists
authorAnton Khorev <tony29@yandex.ru>
Sat, 15 Mar 2025 23:05:18 +0000 (02:05 +0300)
committerAnton Khorev <tony29@yandex.ru>
Sat, 15 Mar 2025 23:05:18 +0000 (02:05 +0300)
This is to match older/newer pagination that uses 'before' and 'after' parameters.

app/controllers/changesets_controller.rb
app/views/changesets/history.html.erb
app/views/changesets/index.html.erb
test/controllers/changesets_controller_test.rb

index d5ac49d4ccc04dafa68534158470872c3132f3b9..abdc23f0439b942ff9240eaaff278e5e9fb047d7 100644 (file)
@@ -17,12 +17,12 @@ class ChangesetsController < ApplicationController
   ##
   # list non-empty changesets in reverse chronological order
   def index
   ##
   # 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
 
       return
     end
 
@@ -59,7 +59,7 @@ class ChangesetsController < ApplicationController
         changesets = changesets.where(:user => current_user.nearby)
       end
 
         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)
 
 
       @changesets = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments)
 
index a536677b08b727fc304414ba8b5571c29e2618b7..8163f2e60f100d6d48ccee7741e443dc459a596a 100644 (file)
@@ -1,6 +1,6 @@
 <% content_for :auto_discovery_link_tag do -%>
   <% unless params[:friends] or params[:nearby] -%>
 <% 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 -%>
 
   <% end -%>
 <% end -%>
 
index fc5f7cbbc85bfaeb57c78d71a383aea88d73125d..85c5f0bcb08a94e2e267fbc6fb8aa6dd82523713 100644 (file)
@@ -4,7 +4,7 @@
   </ol>
 <% if @changesets.size == 20 -%>
   <div class="changeset_more mt-3 text-center">
   </ol>
 <% if @changesets.size == 20 -%>
   <div class="changeset_more mt-3 text-center">
-    <%= 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" %>
     <div class="text-center loader">
       <div class="spinner-border" role="status">
         <span class="visually-hidden"><%= t("browse.start_rjs.loading") %></span>
     <div class="text-center loader">
       <div class="spinner-border" role="status">
         <span class="visually-hidden"><%= t("browse.start_rjs.loading") %></span>
@@ -13,9 +13,9 @@
   </div>
 <% end -%>
 <% elsif params[:bbox] %>
   </div>
 <% end -%>
 <% elsif params[:bbox] %>
-  <p class="mx-3"><%= params[:max_id] ? t(".no_more_area") : t(".empty_area") %></p>
+  <p class="mx-3"><%= params[:before] ? t(".no_more_area") : t(".empty_area") %></p>
 <% elsif params[:display_name] %>
 <% elsif params[:display_name] %>
-  <p class="mx-3"><%= params[:max_id] ? t(".no_more_user") : t(".empty_user") %></p>
+  <p class="mx-3"><%= params[:before] ? t(".no_more_user") : t(".empty_user") %></p>
 <% else %>
 <% else %>
-  <p class="mx-3"><%= params[:max_id] ? t(".no_more") : t(".empty") %></p>
+  <p class="mx-3"><%= params[:before] ? t(".no_more") : t(".empty") %></p>
 <% end %>
 <% end %>
index 2e701f248ae0863a7cce1af500125e36e953a30e..4274f7c313cc7856a6dceaae7a5a7c19babefea7 100644 (file)
@@ -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|
   # 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
       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
 
   ##
   # 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
 
     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"
 
     assert_response :success
     assert_template "index"
 
-    check_index_result([changeset])
+    check_index_result [changeset1]
   end
 
   ##
   end
 
   ##
@@ -411,8 +411,8 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest
 
   ##
   # Check that we can't request later pages of the changesets feed
 
   ##
   # 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
 
     assert_redirected_to :action => :feed
   end