DEV: Add support for limit in notifications index w/o recent param (#24423)

Currently to use a limit in the notifications index, you have to also pass recent: true as a param.

This PR:

Adds optional limit param to be used in the notifications query, regardless of the presence of recent
Raises the max limit of the response with recent present from 50 -> 60. It is super weird we have a hard-limit of 50 before with recent param, and 60 without the param.
This commit is contained in:
Mark VanLandingham
2023-11-17 08:22:18 -06:00
committed by GitHub
parent a5ed0ea5d6
commit 7d35e406ba
2 changed files with 32 additions and 4 deletions

View File

@ -5,7 +5,7 @@ class NotificationsController < ApplicationController
before_action :ensure_admin, only: %i[create update destroy]
before_action :set_notification, only: %i[update destroy]
INDEX_LIMIT = 50
INDEX_LIMIT = 60
def index
user =
@ -72,6 +72,7 @@ class NotificationsController < ApplicationController
render_json_dump(json)
else
limit = fetch_limit_from_params(default: INDEX_LIMIT, max: INDEX_LIMIT)
offset = params[:offset].to_i
notifications =
@ -82,7 +83,7 @@ class NotificationsController < ApplicationController
notifications = notifications.where(read: false) if params[:filter] == "unread"
total_rows = notifications.dup.count
notifications = notifications.offset(offset).limit(60)
notifications = notifications.offset(offset).limit(limit)
notifications =
Notification.filter_inaccessible_topic_notifications(current_user.guardian, notifications)
render_json_dump(
@ -90,7 +91,12 @@ class NotificationsController < ApplicationController
total_rows_notifications: total_rows,
seen_notification_id: user.seen_notification_id,
load_more_notifications:
notifications_path(username: user.username, offset: offset + 60, filter: params[:filter]),
notifications_path(
username: user.username,
offset: offset + limit,
limit: limit,
filter: params[:filter],
),
)
end
end