Skip to content

Commit 325a32b

Browse files
authored
Merge pull request #2013 from codidact/0valt/2008/user-post-list-sort
2 parents bb0317e + 7314863 commit 325a32b

2 files changed

Lines changed: 38 additions & 24 deletions

File tree

app/controllers/users_controller.rb

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,13 @@ def index
4545

4646
def show
4747
@abilities = Ability.on_user(@user)
48+
@limit = params[:limit]&.to_i || 15
4849

49-
all_posts = if current_user&.privilege?('flag_curate') || @user == current_user
50-
@user.posts
51-
else
52-
@user.posts.undeleted
53-
end
54-
.list_includes
55-
.joins(:category)
56-
.where('IFNULL(categories.min_view_trust_level, 0) <= ?', current_user&.trust_level || 0)
57-
.user_sort({ term: params[:sort], default: :score },
58-
age: :created_at, score: :score)
59-
60-
@posts = all_posts.first(15)
61-
@total_post_count = all_posts.count
50+
@posts = set_posts.user_sort({ term: params[:sort], default: :score },
51+
age: :created_at, score: :score)
52+
53+
@total_post_count = @posts.count
54+
@posts = @posts.first(@limit)
6255
render layout: 'without_sidebar'
6356
end
6457

@@ -215,17 +208,13 @@ def set_preference
215208
end
216209

217210
def posts
218-
@posts = if current_user&.privilege?('flag_curate') || @user == current_user
219-
Post.all
220-
else
221-
Post.undeleted
222-
end.by(@user).list_includes.joins(:category)
223-
.where('IFNULL(categories.min_view_trust_level, 0) <= ?', current_user&.trust_level || 0)
224-
.user_sort({ term: params[:sort], default: :score },
225-
activity: :last_activity,
226-
age: :created_at,
227-
score: :score)
228-
.paginate(page: params[:page], per_page: 25)
211+
@posts = set_posts.user_sort({ term: params[:sort], default: :score },
212+
activity: :last_activity,
213+
age: :created_at,
214+
score: :score)
215+
.order(created_at: :desc)
216+
.paginate(page: params[:page], per_page: 25)
217+
229218
respond_to do |format|
230219
format.html do
231220
render :posts
@@ -661,6 +650,17 @@ def filter_params
661650
include_tags: [], exclude_tags: [])
662651
end
663652

653+
def set_posts
654+
@posts = if current_user&.privilege?('flag_curate') || @user == current_user
655+
@user.posts
656+
else
657+
@user.posts.undeleted
658+
end
659+
.list_includes
660+
.joins(:category)
661+
.where('IFNULL(categories.min_view_trust_level, 0) <= ?', current_user&.trust_level || 0)
662+
end
663+
664664
def set_user
665665
user_id = if params[:id] == 'me' && user_signed_in?
666666
current_user.id

test/controllers/users_controller_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,20 @@ class UsersControllerTest < ActionController::TestCase
4848
assert_response(:not_found)
4949
end
5050

51+
test 'should correctly show user post count' do
52+
std = users(:standard_user)
53+
post_count = Post.all.by(std).count
54+
limit = post_count - 1
55+
56+
assert post_count.positive? && limit.positive?
57+
58+
sign_in std
59+
get :show, params: { id: std.id, limit: limit }
60+
61+
assert_equal assigns(:posts)&.count, limit
62+
assert_equal assigns(:total_post_count), post_count
63+
end
64+
5165
test 'should get mod tools page' do
5266
sign_in users(:moderator)
5367
get :mod, params: { id: users(:standard_user).id }

0 commit comments

Comments
 (0)