mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-28 07:19:11 +08:00
Users can hide their public profile and presence information by checking
“Hide my public profile and presence features” on the
`u/{username}/preferences/interface` page. In that case, we also don't
want to return user status from the server.
This work has been started in https://github.com/discourse/discourse/pull/23946.
The current PR fixes all the remaining places in Core.
Note that the actual fix is quite simple – https://github.com/discourse/discourse/pull/24300/commits/a5802f484db92ff3f7e535ed25e1591d1f19b03b.
But we had a fair amount of duplication in the code responsible for
the user status serialization, so I had to dry that up first. The refactoring
as well as adding some additional tests is the main part of this PR.
16 lines
381 B
Ruby
Vendored
16 lines
381 B
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
module UserStatusMixin
|
|
def self.included(klass)
|
|
klass.attributes :status
|
|
end
|
|
|
|
def include_status?
|
|
@options[:include_status] && SiteSetting.enable_user_status &&
|
|
!object.user_option&.hide_profile_and_presence && object.has_status?
|
|
end
|
|
|
|
def status
|
|
UserStatusSerializer.new(object.user_status, root: false).as_json
|
|
end
|
|
end
|