Add optional bulk mailer settings (#35203)
This commit is contained in:
18
app/mailers/concerns/bulk_mail_settings_concern.rb
Normal file
18
app/mailers/concerns/bulk_mail_settings_concern.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module BulkMailSettingsConcern
|
||||
include ActiveSupport::Concern
|
||||
include Mastodon::EmailConfigurationHelper
|
||||
|
||||
private
|
||||
|
||||
def use_bulk_mail_delivery_settings
|
||||
return if bulk_mail_configuration&.dig(:smtp_settings, :address).blank?
|
||||
|
||||
mail.delivery_method.settings = convert_smtp_settings(bulk_mail_configuration[:smtp_settings])
|
||||
end
|
||||
|
||||
def bulk_mail_configuration
|
||||
Rails.configuration.x.email&.bulk_mail
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,8 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class UserMailer < Devise::Mailer
|
||||
include BulkMailSettingsConcern
|
||||
|
||||
layout 'mailer'
|
||||
|
||||
helper :accounts
|
||||
@@ -12,6 +14,8 @@ class UserMailer < Devise::Mailer
|
||||
|
||||
before_action :set_instance
|
||||
|
||||
after_action :use_bulk_mail_delivery_settings, only: [:announcement_published, :terms_of_service_changed]
|
||||
|
||||
default to: -> { @resource.email }
|
||||
|
||||
def confirmation_instructions(user, token, *, **)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class Admin::DistributeAnnouncementNotificationWorker
|
||||
include Sidekiq::IterableJob
|
||||
include BulkMailer
|
||||
include BulkMailingConcern
|
||||
|
||||
def build_enumerator(announcement_id, cursor:)
|
||||
@announcement = Announcement.find(announcement_id)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class Admin::DistributeTermsOfServiceNotificationWorker
|
||||
include Sidekiq::IterableJob
|
||||
include BulkMailer
|
||||
include BulkMailingConcern
|
||||
|
||||
def build_enumerator(terms_of_service_id, cursor:)
|
||||
@terms_of_service = TermsOfService.find(terms_of_service_id)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module BulkMailer
|
||||
module BulkMailingConcern
|
||||
def push_bulk_mailer(mailer_class, mailer_method, args_array)
|
||||
raise ArgumentError, "No method #{mailer_method} on class #{mailer_class.name}" unless mailer_class.respond_to?(mailer_method)
|
||||
|
||||
Reference in New Issue
Block a user