* Initial invitation work * Add more invitation code * Add proper registration page * Fix up tests * Fix failings * Fix spec * Add self-serve auth config * Add registered condition * Change profile image call and registered_at test * Change comment * Fix copy test * Stub emojipedia * Linting * Add registered at to factory * Ensure registered for user tag * Update app/views/internal/invitations/index.html.erb Co-authored-by: Michael Kohl <citizen428@dev.to> * Update app/controllers/internal/invitations_controller.rb Co-authored-by: Michael Kohl <citizen428@dev.to> * Slight changes * Update recover password flow * Update app/views/internal/invitations/index.html.erb Co-authored-by: Michael Kohl <citizen428@dev.to> * Update app/controllers/internal/invitations_controller.rb Co-authored-by: Michael Kohl <citizen428@dev.to> * Update db/schema.rb Co-authored-by: Michael Kohl <citizen428@dev.to>
32 lines
865 B
Ruby
32 lines
865 B
Ruby
class EmailDigest
|
|
def self.send_periodic_digest_email(users = [])
|
|
new(users).send_periodic_digest_email
|
|
end
|
|
|
|
def initialize(users = [])
|
|
@users = users.empty? ? get_users : users
|
|
end
|
|
|
|
def send_periodic_digest_email
|
|
@users.find_each do |user|
|
|
user_email_heuristic = EmailLogic.new(user).analyze
|
|
next unless user_email_heuristic.should_receive_email?
|
|
|
|
articles = user_email_heuristic.articles_to_send
|
|
begin
|
|
next unless user.email_digest_periodic?
|
|
|
|
DigestMailer.with(user: user, articles: articles).digest_email.deliver_now
|
|
rescue StandardError => e
|
|
Honeybadger.context({ user_id: user.id, article_ids: articles.map(&:id) })
|
|
Honeybadger.notify(e)
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def get_users
|
|
User.registered.where(email_digest_periodic: true).where.not(email: "")
|
|
end
|
|
end
|