0
0
Fork 0

Change how changes to media attachments are stored for edits (#17696)

* Change how changes to media attachments are stored for edits

Fix not being able to re-order media attachments

* Fix not broadcasting updates when polls/media is changed through ActivityPub

* Various fixes and improvements

* Update app/models/report.rb

Co-authored-by: Claire <claire.github-309c@sitedethib.com>

* Add tracking of media attachment description changes

* Change poll in status edit to have a structure closer to the real one

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Eugen Rochko 2022-03-09 09:06:17 +01:00 committed by GitHub
parent bd53dd5210
commit d17fb70131
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 190 additions and 125 deletions

View file

@ -76,13 +76,14 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
end
end
removed_media_attachments = previous_media_attachments - next_media_attachments
added_media_attachments = next_media_attachments - previous_media_attachments
added_media_attachments = next_media_attachments - previous_media_attachments
MediaAttachment.where(id: removed_media_attachments.map(&:id)).update_all(status_id: nil)
MediaAttachment.where(id: added_media_attachments.map(&:id)).update_all(status_id: @status.id)
@media_attachments_changed = true if removed_media_attachments.any? || added_media_attachments.any?
@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?
end
def update_poll!
@ -215,19 +216,13 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
return if @status.edits.any?
@status.snapshot!(
media_attachments_changed: false,
at_time: @status.created_at
)
@status.snapshot!(at_time: @status.created_at)
end
def create_edit!
return unless significant_changes?
@status.snapshot!(
media_attachments_changed: @media_attachments_changed || @poll_changed,
account_id: @account.id
)
@status.snapshot!(account_id: @account.id)
end
def skip_download?