docbrown/app/mailers/notify_mailer.rb
rhymes 915e2d77b6 Export articles/posts (#576)
* Add EditorConfig file for all editors

* Add article export service

* Add setting to request an export of all articles

* On the outside they are called posts

* Add articles exported email to mailer and service

* Refactor to one public method and test flags

* Trigger the export if it was requested and send the email

* Recreated migration file with generic export fields

* Rename fields and switch to a whitelist

* Refactor ArticleExportService into a more generic structure

* Rename articles_exported_email to export_email

* Fix notify mailer spec

* Rename Exporter::Exporter to Exporter::Service

* Remove commented out line

* Removed body_html, coordinates and updated_at from export

* Invert DJ config

* Update spec
2018-11-21 11:13:36 -05:00

104 lines
3.6 KiB
Ruby

class NotifyMailer < ApplicationMailer
def new_reply_email(comment)
@user = comment.parent_user
return if RateLimitChecker.new.limit_by_email_recipient_address(@user.email)
@unsubscribe = generate_unsubscribe_token(@user.id, :email_comment_notifications)
@comment = comment
mail(to: @user.email, subject: "#{@comment.user.name} replied to your #{@comment.parent_type}")
end
def new_follower_email(follow)
@user = follow.followable
return if RateLimitChecker.new.limit_by_email_recipient_address(@user.email)
@follower = follow.follower
@unsubscribe = generate_unsubscribe_token(@user.id, :email_follower_notifications)
mail(to: @user.email, subject: "#{@follower.name} just followed you on dev.to")
end
def new_mention_email(mention)
@user = User.find(mention.user_id)
return if RateLimitChecker.new.limit_by_email_recipient_address(@user.email)
@mentioner = User.find(mention.mentionable.user_id)
@mentionable = mention.mentionable
@mention = mention
@unsubscribe = generate_unsubscribe_token(@user.id, :email_mention_notifications)
mail(to: @user.email, subject: "#{@mentioner.name} just mentioned you!")
end
def unread_notifications_email(user)
@user = user
return if RateLimitChecker.new.limit_by_email_recipient_address(@user.email)
@unread_notifications_count = NotificationCounter.new(@user).unread_notification_count
@unsubscribe = generate_unsubscribe_token(@user.id, :email_unread_notifications)
subject = "🔥 You have #{@unread_notifications_count} unread notifications on dev.to"
mail(to: @user.email, subject: subject)
end
def video_upload_complete_email(article)
@article = article
@user = @article.user
mail(to: @user.email, subject: "Your video upload is complete")
end
def new_badge_email(badge_achievement)
@badge_achievement = badge_achievement
@user = @badge_achievement.user
@badge = @badge_achievement.badge
mail(to: @user.email, subject: "You just got a badge")
end
def feedback_message_resolution_email(params)
@user = User.find_by(email: params[:email_to])
@email_body = params[:email_body]
track utm_campaign: params[:email_type]
track extra: { feedback_message_id: params[:feedback_message_id] }
mail(to: params[:email_to], subject: params[:email_subject])
end
def new_report_email(report)
@feedback_message = report
@user = report.reporter
mail(to: @user.email, subject: "Thank you for your report")
end
def new_message_email(message)
@message = message
@user = message.direct_receiver
subject = "#{message.user.name} just messaged you"
mail(to: @user.email, subject: subject)
end
def reporter_resolution_email(report)
@feedback_message = report
@user = report.reporter
end
def account_deleted_email(user)
@name = user.name
subject = "dev.to - Account Deletion Confirmation"
mail(to: user.email, subject: subject)
end
def mentee_email(mentee, mentor)
@mentee = mentee
@mentor = mentor
subject = "You have been matched with a DEV mentor!"
mail(to: @mentee.email, subject: subject, from: "Liana (from dev.to) <liana@dev.to>")
end
def mentor_email(mentor, mentee)
@mentor = mentor
@mentee = mentee
subject = "You have been matched with a new DEV mentee!"
mail(to: @mentor.email, subject: subject, from: "Liana (from dev.to) <liana@dev.to>")
end
def export_email(user, attachment)
@user = user
export_filename = "devto-export-#{Date.current.iso8601}.zip"
attachments[export_filename] = attachment
mail(to: @user.email, subject: "The export of your data is ready")
end
end