diff --git a/app/models/asset.rb b/app/models/asset.rb index 5bf4a7675..7c664cfc0 100644 --- a/app/models/asset.rb +++ b/app/models/asset.rb @@ -241,7 +241,7 @@ class Asset < ApplicationRecord download_blob_to_tempfile do |tmp_file| to_asset.file.attach(io: tmp_file.open, filename: file_name) end - new_asset.post_process_file(new_asset.team) + to_asset.post_process_file(to_asset.team) end def extract_image_quality diff --git a/app/models/concerns/tiny_mce_images.rb b/app/models/concerns/tiny_mce_images.rb index 02f5e9b53..e469d1912 100644 --- a/app/models/concerns/tiny_mce_images.rb +++ b/app/models/concerns/tiny_mce_images.rb @@ -73,7 +73,7 @@ module TinyMceImages tiny_img_clone.transaction do tiny_img_clone.save! - tiny_img_clone.image.attach(io: tiny_img.image.open, filename: tiny_img.image.filename.to_s) + tiny_img.duplicate_file(tiny_img_clone) end target.tiny_mce_assets << tiny_img_clone @@ -96,8 +96,6 @@ module TinyMceImages next if asset && asset.object == self && asset.team_id != asset_team_id - new_image = asset.image - new_image_filename = new_image.file_name else # We need implement size and type checks here new_image = URI.parse(image['src']).open @@ -111,7 +109,11 @@ module TinyMceImages new_asset.transaction do new_asset.save! - new_asset.image.attach(io: new_image, filename: new_image_filename) + if image['data-mce-token'] + asset.duplicate_file(new_asset) + else + new_asset.image.attach(io: new_image, filename: new_image_filename) + end end image['src'] = '' diff --git a/app/models/protocol.rb b/app/models/protocol.rb index d0009893d..bcafa8e3f 100644 --- a/app/models/protocol.rb +++ b/app/models/protocol.rb @@ -302,6 +302,7 @@ class Protocol < ApplicationRecord step.assets.each do |asset| asset2 = asset.dup asset2.save! + asset.duplicate_file(asset2) step2.assets << asset2 assets_to_clone << [asset.id, asset2.id] end diff --git a/app/models/tiny_mce_asset.rb b/app/models/tiny_mce_asset.rb index 32ecac93e..b7478ab95 100644 --- a/app/models/tiny_mce_asset.rb +++ b/app/models/tiny_mce_asset.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class TinyMceAsset < ApplicationRecord + include ActiveStorage::Downloading extend ProtocolsExporter attr_accessor :reference before_create :set_reference, optional: true @@ -170,7 +171,7 @@ class TinyMceAsset < ApplicationRecord tiny_img_clone.transaction do tiny_img_clone.save! - tiny_img_clone.image.attach(io: image.download, filename: image.filename.sanitized) + duplicate_file(tiny_img_clone) end return false unless tiny_img_clone.persisted? @@ -188,6 +189,17 @@ class TinyMceAsset < ApplicationRecord obj.reassign_tiny_mce_image_references(cloned_img_ids) end + def blob + image&.blob + end + + def duplicate_file(to_asset) + download_blob_to_tempfile do |tmp_file| + to_asset.image.attach(io: tmp_file.open, filename: file_name) + end + TinyMceAsset.update_estimated_size(to_asset.id) + end + private def self_destruct