revisted fix for #462
Moved validation to services/post_status_service.rb
This commit is contained in:
parent
6d2301988f
commit
6f9ecd899e
4 changed files with 18 additions and 15 deletions
|
@ -119,9 +119,6 @@ export function uploadCompose(files) {
|
||||||
|
|
||||||
let data = new FormData();
|
let data = new FormData();
|
||||||
data.append('file', files[0]);
|
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, {
|
api(getState).post('/api/v1/media', data, {
|
||||||
onUploadProgress: function (e) {
|
onUploadProgress: function (e) {
|
||||||
|
|
|
@ -11,10 +11,6 @@ class Api::V1::MediaController < ApiController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@media = MediaAttachment.create!(account: current_user.account, file: params[:file])
|
@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
|
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
||||||
render json: { error: 'File type of uploaded media could not be verified' }, status: 422
|
render json: { error: 'File type of uploaded media could not be verified' }, status: 422
|
||||||
rescue Paperclip::Error
|
rescue Paperclip::Error
|
||||||
|
|
|
@ -62,12 +62,16 @@ class Api::V1::StatusesController < ApiController
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
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],
|
begin
|
||||||
sensitive: params[:sensitive],
|
@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],
|
||||||
spoiler_text: params[:spoiler_text],
|
sensitive: params[:sensitive],
|
||||||
visibility: params[:visibility],
|
spoiler_text: params[:spoiler_text],
|
||||||
application: doorkeeper_token.application)
|
visibility: params[:visibility],
|
||||||
|
application: doorkeeper_token.application)
|
||||||
|
rescue Mastodon::NotPermitted => e
|
||||||
|
render json: {error: e.message}, status: 422
|
||||||
|
return
|
||||||
|
end
|
||||||
render action: :show
|
render action: :show
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,14 @@ class PostStatusService < BaseService
|
||||||
|
|
||||||
def attach_media(status, media_ids)
|
def attach_media(status, media_ids)
|
||||||
return if media_ids.nil? || !media_ids.is_a?(Enumerable)
|
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))
|
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)
|
media.update(status_id: status.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue