* update style for new reply email * Truncate and sanitize comment * rubocop * fix links, fix stop send when no content
157 lines
5.3 KiB
Ruby
157 lines
5.3 KiB
Ruby
class NotifyMailer < ApplicationMailer
|
|
has_history extra: lambda {
|
|
{
|
|
feedback_message_id: params[:feedback_message_id],
|
|
utm_campaign: params[:email_type]
|
|
}
|
|
}, only: :feedback_message_resolution_email
|
|
|
|
def new_reply_email
|
|
@comment = params[:comment]
|
|
sanitized_comment = ApplicationController.helpers.sanitize(@comment.processed_html,
|
|
scrubber: CommentEmailScrubber.new)
|
|
@truncated_comment = ApplicationController.helpers.truncate(sanitized_comment, length: 500, separator: " ",
|
|
omission: "...", escape: false)
|
|
|
|
@user = @comment.parent_user
|
|
return if RateLimitChecker.new.limit_by_email_recipient_address(@user.email)
|
|
|
|
@unsubscribe = generate_unsubscribe_token(@user.id, :email_comment_notifications)
|
|
|
|
# Don't send the email if there's no visible contents
|
|
# Placed here to allow the preview to continue to work
|
|
return if @truncated_comment.blank?
|
|
|
|
mail(to: @user.email,
|
|
subject: I18n.t("mailers.notify_mailer.new_reply", name: @comment.user.name, type: @comment.parent_type))
|
|
end
|
|
|
|
def new_follower_email
|
|
follow = params[: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} #{subjects[__method__]}")
|
|
end
|
|
|
|
def new_mention_email
|
|
@mention = params[: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
|
|
@mentionable_type = @mention.decorate.formatted_mentionable_type
|
|
|
|
@unsubscribe = generate_unsubscribe_token(@user.id, :email_mention_notifications)
|
|
|
|
mail(to: @user.email,
|
|
subject: I18n.t("mailers.notify_mailer.new_mention", name: @mentioner.name, type: @mentionable_type))
|
|
end
|
|
|
|
def unread_notifications_email
|
|
@user = params[:user]
|
|
return if RateLimitChecker.new.limit_by_email_recipient_address(@user.email)
|
|
|
|
@unread_notifications_count = @user.notifications.unread.count
|
|
@unsubscribe = generate_unsubscribe_token(@user.id, :email_unread_notifications)
|
|
subject = I18n.t("mailers.notify_mailer.unread_notifications", count: @unread_notifications_count,
|
|
community: Settings::Community.community_name)
|
|
mail(to: @user.email, subject: subject)
|
|
end
|
|
|
|
def video_upload_complete_email
|
|
@article = params[:article]
|
|
@user = @article.user
|
|
mail(to: @user.email, subject: I18n.t("mailers.notify_mailer.video_upload"))
|
|
end
|
|
|
|
def new_badge_email
|
|
@badge_achievement = params[:badge_achievement]
|
|
@user = @badge_achievement.user
|
|
@badge = @badge_achievement.badge
|
|
@unsubscribe = generate_unsubscribe_token(@user.id, :email_badge_notifications)
|
|
|
|
mail(to: @user.email, subject: I18n.t("mailers.notify_mailer.new_badge"))
|
|
end
|
|
|
|
def feedback_response_email
|
|
mail(to: params[:email_to],
|
|
subject: I18n.t("mailers.notify_mailer.feedback",
|
|
community: Settings::Community.community_name))
|
|
end
|
|
|
|
def feedback_message_resolution_email
|
|
@user = User.find_by(email: params[:email_to])
|
|
@email_body = params[:email_body]
|
|
|
|
mail(to: params[:email_to], subject: params[:email_subject])
|
|
end
|
|
|
|
def user_contact_email
|
|
@user = User.find(params[:user_id])
|
|
@email_body = params[:email_body]
|
|
|
|
mail(to: @user.email, subject: params[:email_subject])
|
|
end
|
|
|
|
def account_deleted_email
|
|
@name = params[:name]
|
|
|
|
subject = I18n.t("mailers.notify_mailer.account_deleted", community: Settings::Community.community_name)
|
|
mail(to: params[:email], subject: subject)
|
|
end
|
|
|
|
def organization_deleted_email
|
|
@name = params[:name]
|
|
@org_name = params[:org_name]
|
|
|
|
subject = I18n.t("mailers.notify_mailer.org_deleted", community: Settings::Community.community_name)
|
|
mail(to: params[:email], subject: subject)
|
|
end
|
|
|
|
def account_deletion_requested_email
|
|
user = params[:user]
|
|
@name = user.name
|
|
@token = params[:token]
|
|
|
|
subject = I18n.t("mailers.notify_mailer.deletion_requested", community: Settings::Community.community_name)
|
|
mail(to: user.email, subject: subject)
|
|
end
|
|
|
|
def export_email
|
|
attachment = params[:attachment]
|
|
|
|
export_filename = "devto-export-#{Date.current.iso8601}.zip"
|
|
attachments[export_filename] = attachment
|
|
mail(to: params[:email], subject: I18n.t("mailers.notify_mailer.export"))
|
|
end
|
|
|
|
def tag_moderator_confirmation_email
|
|
@user = params[:user]
|
|
@tag = params[:tag]
|
|
@channel_slug = params[:channel_slug]
|
|
|
|
subject = I18n.t("mailers.notify_mailer.moderator", tag_name: @tag.name)
|
|
mail(to: @user.email, subject: subject)
|
|
end
|
|
|
|
def trusted_role_email
|
|
@user = params[:user]
|
|
|
|
subject = I18n.t("mailers.notify_mailer.trusted",
|
|
community: Settings::Community.community_name)
|
|
mail(to: @user.email, subject: subject)
|
|
end
|
|
|
|
def subjects
|
|
{
|
|
new_follower_email: I18n.t("mailers.notify_mailer.new_follower",
|
|
community: Settings::Community.community_name).freeze
|
|
}.freeze
|
|
end
|
|
end
|