diff options
author | Claire <claire.github-309c@sitedethib.com> | 2022-03-12 19:33:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-12 19:33:10 +0100 |
commit | 92a86b958ee7b96dbcbc17237dfcb1af0f15740c (patch) | |
tree | 544308923622db4c841e699ee2d0c7358de09bf4 /app/services/activitypub | |
parent | d3aa9cf7744eede43c5c1b9097eb1f0720185ccd (diff) |
Fix issues with processing toot edits (#17748)
* Fix searching for an already-known status by URL not working * Fix Update processing from statuses prior to 20220302232632 `ordered_media_attachment_ids_changed?` would return `true` when going from `nil` to anything (including `[]`). * Add tests
Diffstat (limited to 'app/services/activitypub')
-rw-r--r-- | app/services/activitypub/process_status_update_service.rb | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 70e9cb7d9..47a788c30 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -13,7 +13,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @poll_changed = false # 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 @@ -41,13 +41,16 @@ class ActivityPub::ProcessStatusUpdateService < BaseService end forward_activity! if significant_changes? && @status_parser.edited_at.present? && @status_parser.edited_at > last_edit_date + + @status end private def update_media_attachments! - previous_media_attachments = @status.media_attachments.to_a - next_media_attachments = [] + previous_media_attachments = @status.media_attachments.to_a + previous_media_attachments_ids = @status.ordered_media_attachment_ids || previous_media_attachments.map(&:id) + next_media_attachments = [] as_array(@json['attachment']).each do |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.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 def update_poll! |