diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb index 980125ee7..3cc2853c1 100644 --- a/app/controllers/admin/newsletters_controller.rb +++ b/app/controllers/admin/newsletters_controller.rb @@ -46,11 +46,16 @@ class Admin::NewslettersController < Admin::BaseController def deliver @newsletter = Newsletter.find(params[:id]) - Mailer.newsletter(@newsletter).deliver_later - @newsletter.update(sent_at: Time.current) + if @newsletter.valid? + Mailer.newsletter(@newsletter).deliver_later + @newsletter.update(sent_at: Time.current) + flash[:notice] = t("admin.newsletters.send_success") + else + flash[:error] = t("admin.segment_recipient.invalid_recipients_segment") + end - redirect_to [:admin, @newsletter], notice: t("admin.newsletters.send_success") + redirect_to [:admin, @newsletter] end private diff --git a/app/views/admin/newsletters/show.html.erb b/app/views/admin/newsletters/show.html.erb index 7f95bacde..1c78d7247 100644 --- a/app/views/admin/newsletters/show.html.erb +++ b/app/views/admin/newsletters/show.html.erb @@ -42,8 +42,9 @@ -<% if @newsletter.draft? %> - <%= link_to t("admin.newsletters.show.send"), deliver_admin_newsletter_path(@newsletter), +<% if @newsletter.draft? && @newsletter.valid_segment_recipient? %> + <%= link_to t("admin.newsletters.show.send"), + deliver_admin_newsletter_path(@newsletter), "data-alert": t("admin.newsletters.show.send_alert", n: recipients_count), method: :post, id: "js-send-newsletter-alert",