Add ability to change content-type when editing a toot

Content-type defaults to edited toot's content-type to avoid surprising
behaviors when using clients that do not support this feature.
This commit is contained in:
Claire 2022-02-10 09:13:27 +01:00
parent f1a6f9062e
commit abd113167b
3 changed files with 5 additions and 1 deletions

View file

@ -66,7 +66,8 @@ class Api::V1::StatusesController < Api::BaseController
media_ids: status_params[:media_ids], media_ids: status_params[:media_ids],
sensitive: status_params[:sensitive], sensitive: status_params[:sensitive],
spoiler_text: status_params[:spoiler_text], spoiler_text: status_params[:spoiler_text],
poll: status_params[:poll] poll: status_params[:poll],
content_type: status_params[:content_type]
) )
render json: @status, serializer: REST::StatusSerializer render json: @status, serializer: REST::StatusSerializer

View file

@ -221,6 +221,7 @@ class Status < ApplicationRecord
spoiler_text: spoiler_text, spoiler_text: spoiler_text,
media_attachments_changed: media_attachments_changed, media_attachments_changed: media_attachments_changed,
account_id: account_id || self.account_id, account_id: account_id || self.account_id,
content_type: content_type,
created_at: at_time || edited_at created_at: at_time || edited_at
) )
end end

View file

@ -13,6 +13,7 @@ class UpdateStatusService < BaseService
# @option options [String] :spoiler_text # @option options [String] :spoiler_text
# @option options [Boolean] :sensitive # @option options [Boolean] :sensitive
# @option options [String] :language # @option options [String] :language
# @option options [String] :content_type
def call(status, account_id, options = {}) def call(status, account_id, options = {})
@status = status @status = status
@options = options @options = options
@ -95,6 +96,7 @@ class UpdateStatusService < BaseService
@status.spoiler_text = @options[:spoiler_text] || '' @status.spoiler_text = @options[:spoiler_text] || ''
@status.sensitive = @options[:sensitive] || @options[:spoiler_text].present? @status.sensitive = @options[:sensitive] || @options[:spoiler_text].present?
@status.language = valid_locale_or_nil(@options[:language] || @status.language || @status.account.user&.preferred_posting_language || I18n.default_locale) @status.language = valid_locale_or_nil(@options[:language] || @status.language || @status.account.user&.preferred_posting_language || I18n.default_locale)
@status.content_type = @options[:content_type] || @status.content_type
@status.edited_at = Time.now.utc @status.edited_at = Time.now.utc
@status.save! @status.save!