mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 23:16:20 +08:00
69bc552054
The "Show more notifications..." link in the notifications dropdown now links to /my/notifications, which is a historical view of all notifications you have recieved. Notification history is loaded in blocks of 60 at a time. Admins can see others' notification history. (This was requested for 'debugging purposes', though that's what impersonation is for, IMO.)
41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
class NotificationsController < ApplicationController
|
|
|
|
before_filter :ensure_logged_in
|
|
|
|
def recent
|
|
notifications = Notification.recent_report(current_user, 10)
|
|
|
|
if notifications.present?
|
|
# ordering can be off due to PMs
|
|
max_id = notifications.map(&:id).max
|
|
current_user.saw_notification_id(max_id) unless params.has_key?(:silent)
|
|
end
|
|
current_user.reload
|
|
current_user.publish_notifications_state
|
|
|
|
render_serialized(notifications, NotificationSerializer)
|
|
end
|
|
|
|
def history
|
|
params.permit(:before, :user)
|
|
params[:before] ||= 1.day.from_now
|
|
|
|
user = current_user
|
|
if params[:user]
|
|
user = User.find_by_username(params[:user].to_s)
|
|
end
|
|
|
|
unless guardian.can_see_notifications?(user)
|
|
return render json: {errors: [I18n.t('js.errors.reasons.forbidden')]}, status: 403
|
|
end
|
|
|
|
notifications = Notification.where(user_id: user.id)
|
|
.includes(:topic)
|
|
.limit(60)
|
|
.where('created_at < ?', params[:before])
|
|
.order(created_at: :desc)
|
|
|
|
render_serialized(notifications, NotificationSerializer)
|
|
end
|
|
end
|