Add _:atomUri property for deduplicating OStatus/ActivityPub legacy records (#4593)
This commit is contained in:
		
							parent
							
								
									075d6a1e13
								
							
						
					
					
						commit
						ad892dbc0c
					
				
					 2 changed files with 17 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		
		Reference in a new issue