Merge branch 'main' into glitch-soc/merge-upstream

This commit is contained in:
Claire 2022-03-12 20:20:58 +01:00
commit 8d4b5ee3ef
2 changed files with 27 additions and 4 deletions

View File

@ -13,7 +13,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
@poll_changed = false @poll_changed = false
# Only native types can be updated at the moment # Only native types can be updated at the moment
return if !expected_type? || already_updated_more_recently? return @status if !expected_type? || already_updated_more_recently?
last_edit_date = status.edited_at.presence || status.created_at last_edit_date = status.edited_at.presence || status.created_at
@ -41,13 +41,16 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
end end
forward_activity! if significant_changes? && @status_parser.edited_at.present? && @status_parser.edited_at > last_edit_date forward_activity! if significant_changes? && @status_parser.edited_at.present? && @status_parser.edited_at > last_edit_date
@status
end end
private private
def update_media_attachments! def update_media_attachments!
previous_media_attachments = @status.media_attachments.to_a previous_media_attachments = @status.media_attachments.to_a
next_media_attachments = [] previous_media_attachments_ids = @status.ordered_media_attachment_ids || previous_media_attachments.map(&:id)
next_media_attachments = []
as_array(@json['attachment']).each do |attachment| as_array(@json['attachment']).each do |attachment|
media_attachment_parser = ActivityPub::Parser::MediaAttachmentParser.new(attachment) media_attachment_parser = ActivityPub::Parser::MediaAttachmentParser.new(attachment)
@ -87,7 +90,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
@status.ordered_media_attachment_ids = next_media_attachments.map(&:id) @status.ordered_media_attachment_ids = next_media_attachments.map(&:id)
@status.media_attachments.reload @status.media_attachments.reload
@media_attachments_changed = true if @status.ordered_media_attachment_ids_changed? @media_attachments_changed = true if @status.ordered_media_attachment_ids != previous_media_attachments_ids
end end
def update_poll! def update_poll!

View File

@ -46,6 +46,26 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
expect(status.reload.spoiler_text).to eq 'Show more' expect(status.reload.spoiler_text).to eq 'Show more'
end end
context 'with no changes and originally with no ordered_media_attachment_ids' do
let(:payload) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
id: 'foo',
type: 'Note',
content: 'Hello world',
}
end
before do
status.update(ordered_media_attachment_ids: nil)
subject.call(status, json)
end
it 'does not record an update' do
expect(status.reload.edited?).to be false
end
end
context 'originally without tags' do context 'originally without tags' do
before do before do
subject.call(status, json) subject.call(status, json)