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:
parent
dc84899fff
commit
66436d0895
7 changed files with 25 additions and 30 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue