Merge commit 'df2611a10f
' into kbtopic-remove-quote
This commit is contained in:
commit
e4c72836a3
36 changed files with 1660 additions and 87 deletions
25
app/serializers/rest/base_quote_serializer.rb
Normal file
25
app/serializers/rest/base_quote_serializer.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class REST::BaseQuoteSerializer < ActiveModel::Serializer
|
||||
attributes :state
|
||||
|
||||
def state
|
||||
return object.state unless object.accepted?
|
||||
|
||||
# Extra states when a status is unavailable
|
||||
return 'deleted' if object.quoted_status.nil?
|
||||
return 'unauthorized' if status_filter.filtered?
|
||||
|
||||
object.state
|
||||
end
|
||||
|
||||
def quoted_status
|
||||
object.quoted_status if object.accepted? && object.quoted_status.present? && !status_filter.filtered?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def status_filter
|
||||
@status_filter ||= StatusFilter.new(object.quoted_status, current_user&.account, instance_options[:relationships] || {})
|
||||
end
|
||||
end
|
5
app/serializers/rest/quote_serializer.rb
Normal file
5
app/serializers/rest/quote_serializer.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class REST::QuoteSerializer < REST::BaseQuoteSerializer
|
||||
has_one :quoted_status, serializer: REST::ShallowStatusSerializer
|
||||
end
|
9
app/serializers/rest/shallow_quote_serializer.rb
Normal file
9
app/serializers/rest/shallow_quote_serializer.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class REST::ShallowQuoteSerializer < REST::BaseQuoteSerializer
|
||||
attribute :quoted_status_id
|
||||
|
||||
def quoted_status_id
|
||||
quoted_status&.id&.to_s
|
||||
end
|
||||
end
|
9
app/serializers/rest/shallow_status_serializer.rb
Normal file
9
app/serializers/rest/shallow_status_serializer.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class REST::ShallowStatusSerializer < REST::StatusSerializer
|
||||
has_one :quote, key: :quote, serializer: REST::ShallowQuoteSerializer
|
||||
|
||||
# It looks like redefining one `has_one` requires redefining all inherited ones
|
||||
has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer
|
||||
has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer
|
||||
end
|
|
@ -11,6 +11,8 @@ class REST::StatusEditSerializer < ActiveModel::Serializer
|
|||
has_many :ordered_media_attachments, key: :media_attachments, serializer: REST::MediaAttachmentSerializer
|
||||
has_many :emojis, serializer: REST::CustomEmojiSlimSerializer
|
||||
|
||||
has_one :quote, serializer: REST::QuoteSerializer, if: -> { object.quote_id.present? }
|
||||
|
||||
attribute :poll, if: -> { object.poll_options.present? }
|
||||
|
||||
def content
|
||||
|
@ -24,4 +26,8 @@ class REST::StatusEditSerializer < ActiveModel::Serializer
|
|||
def markdown_opt
|
||||
object.markdown
|
||||
end
|
||||
|
||||
def quote
|
||||
object.quote_id == status.quote&.id ? status.quote : Quote.new(state: :pending)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -33,6 +33,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
|
|||
has_many :tags
|
||||
has_many :emojis, serializer: REST::CustomEmojiSlimSerializer
|
||||
|
||||
has_one :quote, key: :quote, serializer: REST::QuoteSerializer
|
||||
has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer
|
||||
has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue