mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-28 13:47:23 +00:00
32 lines
990 B
Ruby
32 lines
990 B
Ruby
# 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?
|
|
|
|
status_filter.filter_state_for_quote || object.state
|
|
end
|
|
|
|
def quoted_status
|
|
object.quoted_status if object.accepted? && object.quoted_status.present? && !object.quoted_status&.reblog? && status_filter.filter_state_for_quote != 'unauthorized'
|
|
end
|
|
|
|
private
|
|
|
|
def status_filter
|
|
@status_filter ||= begin
|
|
if current_user && instance_options[:relationships]
|
|
account_ids = instance_options[:relationships].authoring_accounts.pluck(:id)
|
|
domains = instance_options[:relationships].authoring_accounts.pluck(:domain).uniq
|
|
current_user.account.preload_relations!(account_ids, domains)
|
|
end
|
|
StatusFilter.new(object.quoted_status, current_user&.account)
|
|
end
|
|
end
|
|
end
|