0
0
Fork 0

Improve e-mail digest (#9689)

- Reduce time-to-digest from 20 to 7 days
- Fetch mentions starting from +1 day since last login
- Fix case when last login is more recent than last e-mail
- Do not render all mentions, only 40, but show number in subject
- Do not send digest to moved accounts
- Do send digest to silenced accounts
This commit is contained in:
Eugen Rochko 2019-01-02 10:47:32 +01:00 committed by GitHub
parent dc84899fff
commit 66436d0895
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 25 additions and 30 deletions

View file

@ -5,6 +5,9 @@ class Scheduler::EmailScheduler
sidekiq_options unique: :until_executed, 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?
@ -15,11 +18,8 @@ class Scheduler::EmailScheduler
private
def eligible_users
User.confirmed
.joins(:account)
.where(accounts: { silenced: false, suspended: false })
.where(disabled: false)
.where('current_sign_in_at < ?', 20.days.ago)
.where('last_emailed_at IS NULL OR last_emailed_at < ?', 20.days.ago)
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