mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 17:53:40 +08:00
a566ed42ae
This allows users who are privacy conscious to disable the presence features of the forum as well as their public profile.
58 lines
1.6 KiB
Ruby
58 lines
1.6 KiB
Ruby
class UserActionsController < ApplicationController
|
|
|
|
def index
|
|
params.require(:username)
|
|
params.permit(:filter, :offset)
|
|
|
|
per_chunk = 30
|
|
|
|
user = fetch_user_from_params(include_inactive: current_user.try(:staff?) || (current_user && SiteSetting.show_inactive_accounts))
|
|
raise Discourse::NotFound unless guardian.can_see_profile?(user)
|
|
|
|
action_types = (params[:filter] || "").split(",").map(&:to_i)
|
|
|
|
opts = { user_id: user.id,
|
|
user: user,
|
|
offset: params[:offset].to_i,
|
|
limit: per_chunk,
|
|
action_types: action_types,
|
|
guardian: guardian,
|
|
ignore_private_messages: params[:filter] ? false : true }
|
|
|
|
# Pending is restricted
|
|
stream = if opts[:action_types].include?(UserAction::PENDING)
|
|
guardian.ensure_can_see_notifications!(user)
|
|
UserAction.stream_queued(opts)
|
|
else
|
|
UserAction.stream(opts)
|
|
end
|
|
|
|
stream = stream.to_a
|
|
if stream.length == 0 && (help_key = params['no_results_help_key'])
|
|
if user.id == guardian.user.try(:id)
|
|
help_key += ".self"
|
|
else
|
|
help_key += ".others"
|
|
end
|
|
render json: {
|
|
user_action: [],
|
|
no_results_help: I18n.t(help_key)
|
|
}
|
|
else
|
|
render_serialized(stream, UserActionSerializer, root: 'user_actions')
|
|
end
|
|
|
|
end
|
|
|
|
def show
|
|
params.require(:id)
|
|
render_serialized(UserAction.stream_item(params[:id], guardian), UserActionSerializer)
|
|
end
|
|
|
|
def private_messages
|
|
# DO NOT REMOVE
|
|
# TODO should preload messages to avoid extra http req
|
|
end
|
|
|
|
end
|