mirror of https://github.com/tootsuite/mastodon
Add _:atomUri property for deduplicating OStatus/ActivityPub legacy records (#4593)
parent
075d6a1e13
commit
ad892dbc0c
|
@ -4,7 +4,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
|||
def perform
|
||||
return if delete_arrived_first?(object_uri) || unsupported_object_type?
|
||||
|
||||
status = Status.find_by(uri: object_uri)
|
||||
status = find_existing_status
|
||||
|
||||
return status unless status.nil?
|
||||
|
||||
|
@ -23,6 +23,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
|||
|
||||
private
|
||||
|
||||
def find_existing_status
|
||||
status = Status.find_by(uri: object_uri)
|
||||
status ||= Status.find_by(uri: @object['_:atomUri']) if @object['_:atomUri'].present?
|
||||
status
|
||||
end
|
||||
|
||||
def status_params
|
||||
{
|
||||
uri: @object['id'],
|
||||
|
|
|
@ -8,6 +8,8 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
|||
has_many :media_attachments, key: :attachment
|
||||
has_many :virtual_tags, key: :tag
|
||||
|
||||
attribute :atom_uri, key: '_:atomUri', if: :local?
|
||||
|
||||
def id
|
||||
ActivityPub::TagManager.instance.uri_for(object)
|
||||
end
|
||||
|
@ -52,6 +54,14 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
|||
object.mentions + object.tags
|
||||
end
|
||||
|
||||
def atom_uri
|
||||
::TagManager.instance.uri_for(object)
|
||||
end
|
||||
|
||||
def local?
|
||||
object.account.local?
|
||||
end
|
||||
|
||||
class MediaAttachmentSerializer < ActiveModel::Serializer
|
||||
include RoutingHelper
|
||||
|
||||
|
|
Loading…
Reference in New Issue