Merge commit 'df2611a10f
' into kbtopic-remove-quote
This commit is contained in:
commit
e4c72836a3
36 changed files with 1660 additions and 87 deletions
|
@ -19,6 +19,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
@account = status.account
|
||||
@media_attachments_changed = false
|
||||
@poll_changed = false
|
||||
@quote_changed = false
|
||||
@request_id = request_id
|
||||
|
||||
# Only native types can be updated at the moment
|
||||
|
@ -190,7 +191,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
sensitive: @status.sensitive,
|
||||
media_count: @next_media_attachments.size,
|
||||
poll_count: @status.poll&.options&.size || 0,
|
||||
quote: quote,
|
||||
quote: quote_url,
|
||||
reply: @status.reply?,
|
||||
mention_count: @status.mentions.count,
|
||||
reference_count: reference_uris.size,
|
||||
|
@ -217,7 +218,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
|
||||
process_sensitive_words
|
||||
|
||||
@significant_changes = text_significantly_changed? || @status.spoiler_text_changed? || @media_attachments_changed || @poll_changed
|
||||
@significant_changes = text_significantly_changed? || @status.spoiler_text_changed? || @media_attachments_changed || @poll_changed || @quote_changed
|
||||
|
||||
@status.edited_at = @status_parser.edited_at if significant_changes?
|
||||
|
||||
|
@ -252,6 +253,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
update_tags!
|
||||
update_mentions!
|
||||
update_emojis!
|
||||
update_quote!
|
||||
end
|
||||
|
||||
def update_tags!
|
||||
|
@ -340,7 +342,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
def update_references!
|
||||
references = reference_uris
|
||||
|
||||
ProcessReferencesService.call_service_without_error(@status, [], references, [quote].compact)
|
||||
ProcessReferencesService.call_service_without_error(@status, [], references, [quote_url].compact)
|
||||
end
|
||||
|
||||
def reference_uris
|
||||
|
@ -350,7 +352,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
@reference_uris += ProcessReferencesService.extract_uris(@json['content'] || '')
|
||||
end
|
||||
|
||||
def quote
|
||||
def quote_url
|
||||
# TODO: quote
|
||||
nil
|
||||
end
|
||||
|
@ -365,6 +367,45 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
@local_referred_accounts = local_referred_statuses.map(&:account)
|
||||
end
|
||||
|
||||
def update_quote!
|
||||
return unless Mastodon::Feature.inbound_quotes_enabled?
|
||||
|
||||
quote = nil
|
||||
quote_uri = @status_parser.quote_uri
|
||||
|
||||
if quote_uri.present?
|
||||
approval_uri = @status_parser.quote_approval_uri
|
||||
approval_uri = nil if unsupported_uri_scheme?(approval_uri)
|
||||
|
||||
if @status.quote.present?
|
||||
# If the quoted post has changed, discard the old object and create a new one
|
||||
if @status.quote.quoted_status.present? && ActivityPub::TagManager.instance.uri_for(@status.quote.quoted_status) != quote_uri
|
||||
@status.quote.destroy
|
||||
quote = Quote.create(status: @status, approval_uri: approval_uri)
|
||||
@quote_changed = true
|
||||
else
|
||||
quote = @status.quote
|
||||
quote.update(approval_uri: approval_uri, state: :pending) if quote.approval_uri != @status_parser.quote_approval_uri
|
||||
end
|
||||
else
|
||||
quote = Quote.create(status: @status, approval_uri: approval_uri)
|
||||
@quote_changed = true
|
||||
end
|
||||
end
|
||||
|
||||
if quote.present?
|
||||
begin
|
||||
quote.save
|
||||
ActivityPub::VerifyQuoteService.new.call(quote, fetchable_quoted_uri: quote_uri, request_id: @request_id)
|
||||
rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS
|
||||
ActivityPub::RefetchAndVerifyQuoteWorker.perform_in(rand(30..600).seconds, quote.id, quote_uri, { 'request_id' => @request_id })
|
||||
end
|
||||
elsif @status.quote.present?
|
||||
@status.quote.destroy!
|
||||
@quote_changed = true
|
||||
end
|
||||
end
|
||||
|
||||
def update_counts!
|
||||
likes = @status_parser.favourites_count
|
||||
shares = @status_parser.reblogs_count
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue