diff options
author | Claire <claire.github-309c@sitedethib.com> | 2023-01-18 16:33:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-18 16:33:55 +0100 |
commit | 4b92e59f4fea4486ee6e5af7421e7945d5f7f998 (patch) | |
tree | 4a580a0f452a3183bdf71daa62ae031621b40c1f /app/services | |
parent | d1387579b904542245646fc12eca99c97feccc63 (diff) |
Add support for editing media description and focus point of already-posted statuses (#20878)
* Add backend support for editing media attachments of existing posts * Allow editing media attachments of already-posted toots * Add tests
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/update_status_service.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb index c4c934976..f75fdf55d 100644 --- a/app/services/update_status_service.rb +++ b/app/services/update_status_service.rb @@ -10,6 +10,7 @@ class UpdateStatusService < BaseService # @param [Integer] account_id # @param [Hash] options # @option options [Array<Integer>] :media_ids + # @option options [Array<Hash>] :media_attributes # @option options [Hash] :poll # @option options [String] :text # @option options [String] :spoiler_text @@ -50,10 +51,18 @@ class UpdateStatusService < BaseService next_media_attachments = validate_media! added_media_attachments = next_media_attachments - previous_media_attachments + (@options[:media_attributes] || []).each do |attributes| + media = next_media_attachments.find { |attachment| attachment.id == attributes[:id].to_i } + next if media.nil? + + media.update!(attributes.slice(:thumbnail, :description, :focus)) + @media_attachments_changed ||= media.significantly_changed? + end + MediaAttachment.where(id: added_media_attachments.map(&:id)).update_all(status_id: @status.id) @status.ordered_media_attachment_ids = (@options[:media_ids] || []).map(&:to_i) & next_media_attachments.map(&:id) - @media_attachments_changed = previous_media_attachments.map(&:id) != @status.ordered_media_attachment_ids + @media_attachments_changed ||= previous_media_attachments.map(&:id) != @status.ordered_media_attachment_ids @status.media_attachments.reload end |