revisted fix for #462

Moved validation to services/post_status_service.rb
master
Rakib Hasan 8 years ago
parent 6d2301988f
commit 6f9ecd899e
  1. 3
      app/assets/javascripts/components/actions/compose.jsx
  2. 4
      app/controllers/api/v1/media_controller.rb
  3. 6
      app/controllers/api/v1/statuses_controller.rb
  4. 8
      app/services/post_status_service.rb

@ -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
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

Loading…
Cancel
Save