Conflicts: - `app/lib/formatter.rb`: Upstream completely refactored the formatting code and removed that file, while glitch-soc had code for Markdown and HTML toots. Took upstream code, glitch-soc changes will be re-implemented on top of the refactored classes in a later commit. - `app/models/status.rb`: Upstream refactored status edit handling and moved code to `app/models/concerns/status_snapshot_concern.rb`. Applied glitch-soc's changes to that file. - `app/serializers/activitypub/note_serializer.rb`: Not really a conflict, just a line added too close to one modified by glitch-soc. Applied upstream changes while keeping the glitch-soc-modified one. - `app/services/update_status_service.rb`: Not really a conflict, upstream modified a line adjacent to one added by glitch-soc. Applied upstream changes while keeping the glitch-soc line. - `app/views/statuses/_simple_status.html.haml`: Upstream refactored formatting, glitch-soc changed the markup slightly. Applied upstream changes. - `spec/lib/formatter_spec.rb`: Upstream completely refactored the formatting code and removed that file, while glitch-soc had code for Markdown and HTML toots. Took upstream code, glitch-soc changes will be re-implemented on top of the refactored classes in a later commit.
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module StatusSnapshotConcern
 | 
						|
  extend ActiveSupport::Concern
 | 
						|
 | 
						|
  included do
 | 
						|
    has_many :edits, class_name: 'StatusEdit', inverse_of: :status, dependent: :destroy
 | 
						|
  end
 | 
						|
 | 
						|
  def edited?
 | 
						|
    edited_at.present?
 | 
						|
  end
 | 
						|
 | 
						|
  def build_snapshot(account_id: nil, at_time: nil, rate_limit: true)
 | 
						|
    # We don't use `edits#new` here to avoid it having saved when the
 | 
						|
    # status is saved, since we want to control that manually
 | 
						|
 | 
						|
    StatusEdit.new(
 | 
						|
      status_id: id,
 | 
						|
      text: text,
 | 
						|
      spoiler_text: spoiler_text,
 | 
						|
      sensitive: sensitive,
 | 
						|
      ordered_media_attachment_ids: ordered_media_attachment_ids&.dup || media_attachments.pluck(:id),
 | 
						|
      media_descriptions: ordered_media_attachments.map(&:description),
 | 
						|
      poll_options: preloadable_poll&.options&.dup,
 | 
						|
      account_id: account_id || self.account_id,
 | 
						|
      content_type: content_type,
 | 
						|
      created_at: at_time || edited_at,
 | 
						|
      rate_limit: rate_limit
 | 
						|
    )
 | 
						|
  end
 | 
						|
 | 
						|
  def snapshot!(**options)
 | 
						|
    build_snapshot(**options).save!
 | 
						|
  end
 | 
						|
end
 |