Add `roles` attribute to Account entities in REST API (#23255)

shrike
Claire 2023-01-25 19:55:40 +01:00 committed by GitHub
parent e5ae75bf6a
commit 13a2abacc8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 5 deletions

View File

@ -117,7 +117,7 @@ class Status < ApplicationRecord
:tags, :tags,
:preview_cards, :preview_cards,
:preloadable_poll, :preloadable_poll,
account: [:account_stat, :user], account: [:account_stat, user: :role],
active_mentions: { account: :account_stat }, active_mentions: { account: :account_stat },
reblog: [ reblog: [
:application, :application,
@ -127,7 +127,7 @@ class Status < ApplicationRecord
:conversation, :conversation,
:status_stat, :status_stat,
:preloadable_poll, :preloadable_poll,
account: [:account_stat, :user], account: [:account_stat, user: :role],
active_mentions: { account: :account_stat }, active_mentions: { account: :account_stat },
], ],
thread: { account: :account_stat } thread: { account: :account_stat }

View File

@ -26,6 +26,16 @@ class REST::AccountSerializer < ActiveModel::Serializer
end end
end end
class RoleSerializer < ActiveModel::Serializer
attributes :id, :name, :color
def id
object.id.to_s
end
end
has_many :roles, serializer: RoleSerializer, if: :local?
class FieldSerializer < ActiveModel::Serializer class FieldSerializer < ActiveModel::Serializer
include FormattingHelper include FormattingHelper
@ -114,6 +124,14 @@ class REST::AccountSerializer < ActiveModel::Serializer
object.silenced? object.silenced?
end end
def roles
if object.suspended?
[]
else
[object.user.role].compact.filter { |role| role.highlighted? }
end
end
def noindex def noindex
object.user_prefers_noindex? object.user_prefers_noindex?
end end

View File

@ -1,5 +1,5 @@
Fabricator(:user_role) do Fabricator(:user_role) do
name "MyString" name "MyString"
color "MyString" color ""
permissions "" permissions 0
end end