revisted fix for #462
Moved validation to services/post_status_service.rb
This commit is contained in:
parent
6d2301988f
commit
6f9ecd899e
|
@ -119,9 +119,6 @@ export function uploadCompose(files) {
|
|||
|
||||
let data = new FormData();
|
||||
data.append('file', files[0]);
|
||||
data.append('media_ids', getState().getIn(
|
||||
['compose', 'media_attachments']
|
||||
).map(item => item.get('id')));
|
||||
|
||||
api(getState).post('/api/v1/media', data, {
|
||||
onUploadProgress: function (e) {
|
||||
|
|
|
@ -11,10 +11,6 @@ class Api::V1::MediaController < ApiController
|
|||
|
||||
def create
|
||||
@media = MediaAttachment.create!(account: current_user.account, file: params[:file])
|
||||
if @media.video? and params[:media_ids] != "List []"
|
||||
@media.destroy
|
||||
render json: {error: 'Cannot attach a video to a toot that already contains images'}, status: 422
|
||||
end
|
||||
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
||||
render json: { error: 'File type of uploaded media could not be verified' }, status: 422
|
||||
rescue Paperclip::Error
|
||||
|
|
|
@ -62,12 +62,16 @@ class Api::V1::StatusesController < ApiController
|
|||
end
|
||||
|
||||
def create
|
||||
@status = PostStatusService.new.call(current_user.account, params[:status], params[:in_reply_to_id].blank? ? nil : Status.find(params[:in_reply_to_id]), media_ids: params[:media_ids],
|
||||
sensitive: params[:sensitive],
|
||||
spoiler_text: params[:spoiler_text],
|
||||
visibility: params[:visibility],
|
||||
application: doorkeeper_token.application)
|
||||
|
||||
begin
|
||||
@status = PostStatusService.new.call(current_user.account, params[:status], params[:in_reply_to_id].blank? ? nil : Status.find(params[:in_reply_to_id]), media_ids: params[:media_ids],
|
||||
sensitive: params[:sensitive],
|
||||
spoiler_text: params[:spoiler_text],
|
||||
visibility: params[:visibility],
|
||||
application: doorkeeper_token.application)
|
||||
rescue Mastodon::NotPermitted => e
|
||||
render json: {error: e.message}, status: 422
|
||||
return
|
||||
end
|
||||
render action: :show
|
||||
end
|
||||
|
||||
|
|
|
@ -35,8 +35,14 @@ class PostStatusService < BaseService
|
|||
|
||||
def attach_media(status, media_ids)
|
||||
return if media_ids.nil? || !media_ids.is_a?(Enumerable)
|
||||
|
||||
media = MediaAttachment.where(status_id: nil).where(id: media_ids.take(4).map(&:to_i))
|
||||
if media.length > 1
|
||||
media.each do |m|
|
||||
if m.video?
|
||||
raise Mastodon::NotPermitted, 'Cannot attach a video to a toot that already contains images'
|
||||
end
|
||||
end
|
||||
end
|
||||
media.update(status_id: status.id)
|
||||
end
|
||||
|
||||
|
|
Reference in a new issue