diff options
author | Claire <claire.github-309c@sitedethib.com> | 2023-01-18 18:41:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-18 18:41:24 +0100 |
commit | 01405bc6f84fd9cfb974e1e668465148bda47ac5 (patch) | |
tree | cb3103c82a337178a3548e1a157e0fa94be37bdb /app/services | |
parent | 472fd4307f9c963aba57e537e3ca3a8f94dfa139 (diff) | |
parent | 3f74235ac5b6ce6f13c531506f30c466da2a7aa1 (diff) |
Merge pull request #2087 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/activitypub/fetch_remote_actor_service.rb | 1 | ||||
-rw-r--r-- | app/services/update_status_service.rb | 11 |
2 files changed, 11 insertions, 1 deletions
diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb index a25fa54c4..4f60ea5e8 100644 --- a/app/services/activitypub/fetch_remote_actor_service.rb +++ b/app/services/activitypub/fetch_remote_actor_service.rb @@ -28,6 +28,7 @@ class ActivityPub::FetchRemoteActorService < BaseService raise Error, "Unsupported JSON-LD context for document #{uri}" unless supported_context? raise Error, "Unexpected object type for actor #{uri} (expected any of: #{SUPPORTED_TYPES})" unless expected_type? raise Error, "Actor #{uri} has moved to #{@json['movedTo']}" if break_on_redirect && @json['movedTo'].present? + raise Error, "Actor #{uri} has no 'preferredUsername', which is a requirement for Mastodon compatibility" unless @json['preferredUsername'].present? @uri = @json['id'] @username = @json['preferredUsername'] diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb index cc4ec670d..7a8245839 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 @@ -51,10 +52,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 |