mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-16 01:09:55 +00:00
Add support for local quote stamps (#35626)
This commit is contained in:
@@ -278,10 +278,10 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||
return unless quote_uri.present? && @status.quote.present?
|
||||
|
||||
quote = @status.quote
|
||||
return if quote.quoted_status.present? && ActivityPub::TagManager.instance.uri_for(quote.quoted_status) != quote_uri
|
||||
return if quote.quoted_status.present? && (ActivityPub::TagManager.instance.uri_for(quote.quoted_status) != quote_uri || quote.quoted_status.local?)
|
||||
|
||||
approval_uri = @status_parser.quote_approval_uri
|
||||
approval_uri = nil if unsupported_uri_scheme?(approval_uri)
|
||||
approval_uri = nil if unsupported_uri_scheme?(approval_uri) || TagManager.instance.local_url?(approval_uri)
|
||||
|
||||
quote.update(approval_uri: approval_uri, state: :pending, legacy: @status_parser.legacy_quote?) if quote.approval_uri != @status_parser.quote_approval_uri
|
||||
|
||||
@@ -293,7 +293,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||
|
||||
if quote_uri.present?
|
||||
approval_uri = @status_parser.quote_approval_uri
|
||||
approval_uri = nil if unsupported_uri_scheme?(approval_uri)
|
||||
approval_uri = nil if unsupported_uri_scheme?(approval_uri) || TagManager.instance.local_url?(approval_uri)
|
||||
|
||||
if @status.quote.present?
|
||||
# If the quoted post has changed, discard the old object and create a new one
|
||||
|
||||
@@ -13,6 +13,7 @@ class ActivityPub::VerifyQuoteService < BaseService
|
||||
@fetching_error = nil
|
||||
|
||||
fetch_quoted_post_if_needed!(fetchable_quoted_uri, prefetched_body: prefetched_quoted_object)
|
||||
return handle_local_quote! if quote.quoted_account&.local?
|
||||
return if fast_track_approval! || quote.approval_uri.blank?
|
||||
|
||||
@json = fetch_approval_object(quote.approval_uri, prefetched_body: prefetched_approval)
|
||||
@@ -34,6 +35,15 @@ class ActivityPub::VerifyQuoteService < BaseService
|
||||
|
||||
private
|
||||
|
||||
def handle_local_quote!
|
||||
@quote.update!(approval_uri: nil)
|
||||
if StatusPolicy.new(@quote.account, @quote.quoted_status).quote?
|
||||
@quote.accept!
|
||||
else
|
||||
@quote.reject!
|
||||
end
|
||||
end
|
||||
|
||||
# FEP-044f defines rules that don't require the approval flow
|
||||
def fast_track_approval!
|
||||
return false if @quote.quoted_status_id.blank?
|
||||
|
||||
Reference in New Issue
Block a user