From 374f66c59ffaf85d091973e5a849f6c5c24f4ace Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Fri, 17 Jul 2026 11:12:47 +0300 Subject: [PATCH] send view only --- lib/submissions.rb | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/submissions.rb b/lib/submissions.rb index 08a44e42..9587c74a 100644 --- a/lib/submissions.rb +++ b/lib/submissions.rb @@ -157,24 +157,21 @@ module Submissions submissions.each_with_index do |submission, index| delay_seconds = (delay + index).seconds if delay - template_submitters = submission.template_submitters submitters_index = submission.submitters.reject(&:completed_at?).index_by(&:uuid) - if template_submitters.any? { |s| s['order'] } - min_order = template_submitters.map.with_index { |s, i| s['order'] || i }.min - - first_submitters = template_submitters.filter_map do |s| - submitters_index[s['uuid']] if s['order'] == min_order - end + if submission.template_submitters.any? { |s| s['order'] } + first_submitters = find_first_order_submitters(submission, submitters_index) Submitters.send_signature_requests(first_submitters, delay_seconds:) elsif submission.submitters_order_preserved? - first_submitter = template_submitters.filter_map { |s| submitters_index[s['uuid']] }.find { |s| !s.viewer? } + first_submitter = find_first_submitter(submission, submitters_index) if first_submitter first_viewers = find_first_viewers(first_submitter, submitters_index) Submitters.send_signature_requests([first_submitter, *first_viewers], delay_seconds:) + elsif submission.submitters.all?(&:viewer?) + Submitters.send_signature_requests(submitters_index.values, delay_seconds:) end else Submitters.send_signature_requests(submitters_index.values, delay_seconds:) @@ -182,6 +179,18 @@ module Submissions end end + def find_first_order_submitters(submission, submitters_index) + template_submitters = submission.template_submitters + + min_order = template_submitters.map.with_index { |s, i| s['order'] || i }.min + + template_submitters.filter_map { |s| submitters_index[s['uuid']] if s['order'] == min_order } + end + + def find_first_submitter(submission, submitters_index) + submission.template_submitters.filter_map { |s| submitters_index[s['uuid']] }.find { |s| !s.viewer? } + end + def find_first_viewers(first_submitter, submitters_index) first_submitter.submission.template_submitters.each_with_object([]) do |s, viewers| submitter = submitters_index[s['uuid']]