Prevent invalid newsletters from being sent
Why: Newsletters without a valid user segment can't be sent since there is no recipient user email list. How: * Hiding the send button at the form * Preventing an invalid newsletter from being delivered at the controller
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -42,8 +42,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% 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",
|
||||
|
||||
Reference in New Issue
Block a user