@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
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)
@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!
expect(status.reload.spoiler_text).to eq 'Show more'
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
before do
subject.call(status, json)