Fix missing focalPoint in ActivityPub JSON (#6609)
This commit is contained in:
		@@ -90,6 +90,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
 | 
			
		||||
    include RoutingHelper
 | 
			
		||||
 | 
			
		||||
    attributes :type, :media_type, :url, :name
 | 
			
		||||
    attribute :focal_point, if: :focal_point?
 | 
			
		||||
 | 
			
		||||
    def type
 | 
			
		||||
      'Document'
 | 
			
		||||
@@ -106,6 +107,14 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
 | 
			
		||||
    def url
 | 
			
		||||
      object.local? ? full_asset_url(object.file.url(:original, false)) : object.remote_url
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def focal_point?
 | 
			
		||||
      object.file.meta.is_a?(Hash) && object.file.meta['focus'].is_a?(Hash)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def focal_point
 | 
			
		||||
      [object.file.meta['focus']['x'], object.file.meta['focus']['y']]
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class MentionSerializer < ActiveModel::Serializer
 | 
			
		||||
 
 | 
			
		||||
@@ -202,7 +202,7 @@ RSpec.describe ActivityPub::Activity::Create do
 | 
			
		||||
          attachment: [
 | 
			
		||||
            {
 | 
			
		||||
              type: 'Document',
 | 
			
		||||
              mime_type: 'image/png',
 | 
			
		||||
              mediaType: 'image/png',
 | 
			
		||||
              url: 'http://example.com/attachment.png',
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
@@ -217,6 +217,31 @@ RSpec.describe ActivityPub::Activity::Create do
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with media attachments with focal points' do
 | 
			
		||||
      let(:object_json) do
 | 
			
		||||
        {
 | 
			
		||||
          id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
 | 
			
		||||
          type: 'Note',
 | 
			
		||||
          content: 'Lorem ipsum',
 | 
			
		||||
          attachment: [
 | 
			
		||||
            {
 | 
			
		||||
              type: 'Document',
 | 
			
		||||
              mediaType: 'image/png',
 | 
			
		||||
              url: 'http://example.com/attachment.png',
 | 
			
		||||
              focalPoint: [0.5, -0.7],
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      it 'creates status' do
 | 
			
		||||
        status = sender.statuses.first
 | 
			
		||||
 | 
			
		||||
        expect(status).to_not be_nil
 | 
			
		||||
        expect(status.media_attachments.map(&:focus)).to include('0.5,-0.7')
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'with media attachments missing url' do
 | 
			
		||||
      let(:object_json) do
 | 
			
		||||
        {
 | 
			
		||||
@@ -226,7 +251,7 @@ RSpec.describe ActivityPub::Activity::Create do
 | 
			
		||||
          attachment: [
 | 
			
		||||
            {
 | 
			
		||||
              type: 'Document',
 | 
			
		||||
              mime_type: 'image/png',
 | 
			
		||||
              mediaType: 'image/png',
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user