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