perf(InvitationWithTypoComponent): check email once from controller, forward actuel/suggestion email from ctrl to view
This commit is contained in:
parent
4771c45bce
commit
afa9821edb
3 changed files with 12 additions and 14 deletions
|
@ -8,13 +8,4 @@ class Procedure::InvitationWithTypoComponent < ApplicationComponent
|
|||
def render?
|
||||
@maybe_typo.present?
|
||||
end
|
||||
|
||||
def maybe_typos
|
||||
email_checker = EmailChecker.new
|
||||
|
||||
@maybe_typo.map do |actual_email|
|
||||
suggested_email = email_checker.check(email: actual_email)[:email_suggestions].first
|
||||
[actual_email, suggested_email]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
- c.with_body do
|
||||
%p= @title
|
||||
%ul
|
||||
- maybe_typos.each do |(actual_email, suggested_email)|
|
||||
- @maybe_typo.each do |(actual_email, suggested_email)|
|
||||
%li
|
||||
= "Je confirme "
|
||||
= button_to "#{actual_email}", @url, method: :POST, params: { maybe_typo: actual_email }, class: 'fr-btn fr-btn--tertiary fr-btn--sm', form: {class: 'inline'}
|
||||
|
|
|
@ -9,12 +9,19 @@ module Administrateurs
|
|||
end
|
||||
|
||||
def create
|
||||
email_checker = EmailChecker.new
|
||||
emails = params['emails'].presence || [].to_json
|
||||
@maybe_typo, emails = JSON.parse(emails)
|
||||
.map { EmailSanitizer.sanitize(_1) }
|
||||
.partition { EmailChecker.new.check(email: _1)[:email_suggestions].present? }
|
||||
emails = JSON.parse(emails).map { EmailSanitizer.sanitize(_1) }
|
||||
@maybe_typo, emails = emails.map do |email|
|
||||
result = email_checker.check(email: email)
|
||||
if result[:email_suggestions].present?
|
||||
[email, result[:email_suggestions].first]
|
||||
else
|
||||
[email, nil]
|
||||
end
|
||||
end.partition { _1[1].present? }
|
||||
errors = if !@maybe_typo.empty?
|
||||
["Attention, nous pensons avoir identifié une faute de frappe dans les invitations : #{@maybe_typo.join(', ')}"]
|
||||
["Attention, nous pensons avoir identifié une faute de frappe dans les invitations : #{@maybe_typo.map(&:first).join(', ')}"]
|
||||
else
|
||||
[]
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue