tootlab-mastodon/app/models/concerns/status/snapshot_concern.rb
Claire f624ef2778 Merge commit 'b06fd54c305915527e3a6edc575dc23b623143ef' into glitch-soc/merge-upstream
Conflicts:
- `app/helpers/formatting_helper.rb`:
  Upstream wrapped some code glitch-soc had modified in an OTEL instrumentation span.
  Wrapped the modified code.
2024-11-03 20:51:58 +01:00

37 lines
1023 B
Ruby

# frozen_string_literal: true
module Status::SnapshotConcern
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!(**)
build_snapshot(**).save!
end
end