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) {
dispatch(uploadComposeProgress(e.loaded, e.total));
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
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
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