Remove digest e-mails (#17985)

* Remove digest e-mails

* Remove digest-related code
This commit is contained in:
Eugen Rochko 2022-08-25 23:38:22 +02:00 committed by GitHub
parent 5b0e8cc92b
commit 0b3e4fd5de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 1 additions and 214 deletions

View file

@ -55,7 +55,7 @@ class Settings::PreferencesController < Settings::BaseController
:setting_trends,
:setting_crop_images,
:setting_always_send_emails,
notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag appeal),
notification_emails: %i(follow follow_request reblog favourite mention report pending_account trending_tag appeal),
interactions: %i(must_be_follower must_be_following must_be_following_dm)
)
end

View file

@ -66,24 +66,6 @@ class NotificationMailer < ApplicationMailer
end
end
def digest(recipient, **opts)
return unless recipient.user.functional?
@me = recipient
@since = opts[:since] || [@me.user.last_emailed_at, (@me.user.current_sign_in_at + 1.day)].compact.max
@notifications_count = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).count
return if @notifications_count.zero?
@notifications = Notification.where(account: @me, activity_type: 'Mention').where('created_at > ?', @since).limit(40)
@follows_since = Notification.where(account: @me, activity_type: 'Follow').where('created_at > ?', @since).count
locale_for_account(@me) do
mail to: @me.user.email,
subject: I18n.t(:subject, scope: [:notification_mailer, :digest], count: @notifications_count)
end
end
private
def thread_by_conversation(conversation)

View file

@ -289,10 +289,6 @@ class User < ApplicationRecord
settings.default_privacy || (account.locked? ? 'private' : 'public')
end
def allows_digest_emails?
settings.notification_emails['digest']
end
def allows_report_emails?
settings.notification_emails['report']
end

View file

@ -1,44 +0,0 @@
%table.email-table{ cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td.email-body
.email-container
%table.content-section{ cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td.content-cell.darker.hero-with-button
.email-row
.col-6
%table.column{ cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td.column-cell.text-center.padded
%h1= t 'notification_mailer.digest.title'
%p.lead= t('notification_mailer.digest.body', since: l((@me.user_current_sign_in_at || @since).to_date, format: :short), instance: site_hostname)
%table.button{ align: 'center', cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td.button-primary
= link_to web_url do
%span= t 'notification_mailer.digest.action'
- @notifications.each_with_index do |n, i|
= render 'status', status: n.target_status, i: i
- unless @follows_since.zero?
%table.email-table{ cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td.email-body
.email-container
%table.content-section{ cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td.content-cell.content-start.border-top
.email-row
.col-6
%table.column{ cellspacing: 0, cellpadding: 0 }
%tbody
%tr
%td.column-cell.text-center
%p= t('notification_mailer.digest.new_followers_summary', count: @follows_since)

View file

@ -1,15 +0,0 @@
<%= raw t('application_mailer.salutation', name: display_name(@me)) %>
<%= raw t('notification_mailer.digest.body', since: l(@me.user_current_sign_in_at || @since), instance: root_url) %>
<% @notifications.each do |notification| %>
* <%= raw t('notification_mailer.digest.mention', name: notification.from_account.pretty_acct) %>
<%= raw extract_status_plain_text(notification.target_status) %>
<%= raw t('application_mailer.view')%> <%= web_url("statuses/#{notification.target_status.id}") %>
<% end %>
<% if @follows_since > 0 %>
<%= raw t('notification_mailer.digest.new_followers_summary', count: @follows_since) %>
<% end %>

View file

@ -26,10 +26,6 @@
.fields-group
= f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label
.fields-group
= f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
= ff.input :digest, as: :boolean, wrapper: :with_label
%h4= t 'notifications.other_settings'
.fields-group

View file

@ -1,21 +0,0 @@
# frozen_string_literal: true
class DigestMailerWorker
include Sidekiq::Worker
sidekiq_options queue: 'mailers'
attr_reader :user
def perform(user_id)
@user = User.find(user_id)
deliver_digest if @user.allows_digest_emails?
end
private
def deliver_digest
NotificationMailer.digest(user.account).deliver_now!
user.touch(:last_emailed_at)
end
end

View file

@ -1,25 +0,0 @@
# frozen_string_literal: true
class Scheduler::EmailScheduler
include Sidekiq::Worker
sidekiq_options retry: 0
FREQUENCY = 7.days.freeze
SIGN_IN_OFFSET = 1.day.freeze
def perform
eligible_users.reorder(nil).find_each do |user|
next unless user.allows_digest_emails?
DigestMailerWorker.perform_async(user.id)
end
end
private
def eligible_users
User.emailable
.where('current_sign_in_at < ?', (FREQUENCY + SIGN_IN_OFFSET).ago)
.where('last_emailed_at IS NULL OR last_emailed_at < ?', FREQUENCY.ago)
end
end