Merge branch 'master' into glitch-soc/merge-upstream

Conflicts:
- `README.md`:
  Our README.md files are completely different. Discarded upstream changes.
- `app/javascript/core/admin.js`:
  Updating rails-ujs, no real conflict, but a comment to close to changed
  code. Various glitch-soc-only files have been updated to match those changes,
  though.
- `package.json`:
  No real conflict, just an additional dependency in glitch-soc that was too
  close to something updated upstream. Took upstream's changes.
This commit is contained in:
Thibaut Girka
2020-03-22 16:10:44 +01:00
119 changed files with 987 additions and 344 deletions

View File

@@ -0,0 +1,30 @@
# frozen_string_literal: true
module Paperclip
module AttachmentExtensions
# We overwrite this method to support delayed processing in
# Sidekiq. Since we process the original file to reduce disk
# usage, and we still want to generate thumbnails straight
# away, it's the only style we need to exclude
def process_style?(style_name, style_args)
if style_name == :original && instance.respond_to?(:delay_processing?) && instance.delay_processing?
false
else
style_args.empty? || style_args.include?(style_name)
end
end
def reprocess_original!
old_original_path = path(:original)
reprocess!(:original)
new_original_path = path(:original)
if new_original_path != old_original_path
@queued_for_delete << old_original_path
flush_deletes
end
end
end
end
Paperclip::Attachment.prepend(Paperclip::AttachmentExtensions)

View File

@@ -5,12 +5,22 @@ module Paperclip
# to check when uploaded videos are actually gifv's
class VideoTranscoder < Paperclip::Processor
def make
meta = ::Av.cli.identify(@file.path)
movie = FFMPEG::Movie.new(@file.path)
attachment.instance.type = MediaAttachment.types[:gifv] unless meta[:audio_encode]
options[:format] = File.extname(attachment.instance.file_file_name)[1..-1] if options[:keep_same_format]
attachment.instance.type = MediaAttachment.types[:gifv] unless movie.audio_codec
Paperclip::Transcoder.make(file, options, attachment)
Paperclip::Transcoder.make(file, actual_options(movie), attachment)
end
private
def actual_options(movie)
opts = options[:passthrough_options]
if opts && opts[:video_codecs].include?(movie.video_codec) && opts[:audio_codecs].include?(movie.audio_codec) && opts[:colorspaces].include?(movie.colorspace)
opts[:options]
else
options
end
end
end
end