From f380200e039a08be2cb367537fc09db70c37f0db Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 10 Dec 2024 17:41:27 +0200 Subject: [PATCH] add clone document params --- app/controllers/api/templates_clone_controller.rb | 4 +++- lib/templates/clone.rb | 2 +- lib/templates/clone_attachments.rb | 8 ++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/templates_clone_controller.rb b/app/controllers/api/templates_clone_controller.rb index f869fa28..e7e1db7e 100644 --- a/app/controllers/api/templates_clone_controller.rb +++ b/app/controllers/api/templates_clone_controller.rb @@ -23,7 +23,9 @@ module Api cloned_template.source = :api cloned_template.save! - schema_documents = Templates::CloneAttachments.call(template: cloned_template, original_template: @template) + schema_documents = Templates::CloneAttachments.call(template: cloned_template, + original_template: @template, + documents: params[:documents]) WebhookUrls.for_account_id(cloned_template.account_id, 'template.created').each do |webhook_url| SendTemplateCreatedWebhookRequestJob.perform_async('template_id' => cloned_template.id, diff --git a/lib/templates/clone.rb b/lib/templates/clone.rb index 45bd5350..b4b68231 100644 --- a/lib/templates/clone.rb +++ b/lib/templates/clone.rb @@ -10,7 +10,7 @@ module Templates template.external_id = external_id template.author = author template.preferences = original_template.preferences.deep_dup - template.name = name || "#{original_template.name} (#{I18n.t('clone')})" + template.name = name.presence || "#{original_template.name} (#{I18n.t('clone')})" template.assign_attributes(original_template.slice(:folder_id, :schema)) diff --git a/lib/templates/clone_attachments.rb b/lib/templates/clone_attachments.rb index 970214b3..0b52a2fa 100644 --- a/lib/templates/clone_attachments.rb +++ b/lib/templates/clone_attachments.rb @@ -4,17 +4,21 @@ module Templates module CloneAttachments module_function - def call(template:, original_template:) + def call(template:, original_template:, documents: []) schema_uuids_replacements = {} cloned_schema = original_template.schema.deep_dup cloned_fields = template.fields.deep_dup - cloned_schema.each do |schema_item| + cloned_schema.each_with_index do |schema_item, index| new_schema_item_uuid = SecureRandom.uuid schema_uuids_replacements[schema_item['attachment_uuid']] = new_schema_item_uuid schema_item['attachment_uuid'] = new_schema_item_uuid + + new_name = documents&.dig(index, 'name') + + schema_item['name'] = new_name if new_name.present? end cloned_fields.each do |field|