From 0399531e0c24c6d100be49cf17d6b5ef5fdb3a0b Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 3 Feb 2025 18:38:36 +0200 Subject: [PATCH] html image --- .../maybe_assign_default_browser_signature.rb | 2 +- lib/submitters/normalize_values.rb | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/submitters/maybe_assign_default_browser_signature.rb b/lib/submitters/maybe_assign_default_browser_signature.rb index 1c0f124c..98b23131 100644 --- a/lib/submitters/maybe_assign_default_browser_signature.rb +++ b/lib/submitters/maybe_assign_default_browser_signature.rb @@ -18,7 +18,7 @@ module Submitters def find_or_create_signature_from_value(submitter, value, attachments) _, attachment = Submitters::NormalizeValues.normalize_attachment_value(value, - 'signature', + { 'type' => 'signature' }, submitter.account, attachments, submitter) diff --git a/lib/submitters/normalize_values.rb b/lib/submitters/normalize_values.rb index bed672e0..82e3eed6 100644 --- a/lib/submitters/normalize_values.rb +++ b/lib/submitters/normalize_values.rb @@ -40,7 +40,7 @@ module Submitters if field['type'].in?(%w[initials signature image file stamp]) && value.present? new_value, new_attachments = - normalize_attachment_value(value, field['type'], template.account, attachments, for_submitter) + normalize_attachment_value(value, field, template.account, attachments, for_submitter) attachments.push(*new_attachments) @@ -109,17 +109,17 @@ module Submitters .merge(fields.index_by { |e| e['name'].to_s.downcase }) end - def normalize_attachment_value(value, type, account, attachments, for_submitter = nil) + def normalize_attachment_value(value, field, account, attachments, for_submitter = nil) if value.is_a?(Array) new_attachments = value.map do |v| - new_attachment = find_or_build_attachment(v, type, account, for_submitter) + new_attachment = find_or_build_attachment(v, field, account, for_submitter) attachments.find { |a| a.blob_id == new_attachment.blob_id } || new_attachment end [new_attachments.map(&:uuid), new_attachments] else - new_attachment = find_or_build_attachment(value, type, account, for_submitter) + new_attachment = find_or_build_attachment(value, field, account, for_submitter) existing_attachment = attachments.find { |a| a.blob_id == new_attachment.blob_id } @@ -129,7 +129,9 @@ module Submitters end end - def find_or_build_attachment(value, type, account, for_submitter = nil) + def find_or_build_attachment(value, field, account, for_submitter = nil) + type = field['type'] + blob = if value.match?(%r{\Ahttps?://}) find_or_create_blob_from_url(account, value) @@ -138,6 +140,8 @@ module Submitters elsif (data = Base64.decode64(value.sub(BASE64_PREFIX_REGEXP, ''))) && Marcel::MimeType.for(data).exclude?('octet-stream') find_or_create_blob_from_base64(account, data, type) + elsif type == 'image' && (value.starts_with?('') || value.starts_with?('