Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F13523007
digest_email_worker.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
digest_email_worker.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.DigestEmailWorker
do
import
Ecto.Query
@queue_name
:digest_emails
def
perform
do
config
=
Pleroma.Config
.
get
([
:email_notifications
,
:digest
])
negative_interval
=
-
Map
.
fetch!
(
config
,
:interval
)
inactivity_threshold
=
Map
.
fetch!
(
config
,
:inactivity_threshold
)
inactive_users_query
=
Pleroma.User
.
list_inactive_users_query
(
inactivity_threshold
)
now
=
NaiveDateTime
.
truncate
(
NaiveDateTime
.
utc_now
(),
:second
)
from
(
u
in
inactive_users_query
,
where
:
fragment
(
~s(?
#
> '{"email_notifications","digest"}' @> 'true')
,
u
.
info
),
where
:
u
.
last_digest_emailed_at
<
datetime_add
(
^
now
,
^
negative_interval
,
"day"
),
select
:
u
)
|>
Pleroma.Repo
.
all
()
|>
Enum
.
each
(
&
PleromaJobQueue
.
enqueue
(
@queue_name
,
__MODULE__
,
[
&1
]))
end
@doc
"""
Send digest email to the given user.
Updates `last_digest_emailed_at` field for the user and returns the updated user.
"""
@spec
perform
(
Pleroma.User
.
t
())
::
Pleroma.User
.
t
()
def
perform
(
user
)
do
with
%
Swoosh.Email
{}
=
email
<-
Pleroma.Emails.UserEmail
.
digest_email
(
user
)
do
Pleroma.Emails.Mailer
.
deliver_async
(
email
)
end
Pleroma.User
.
touch_last_digest_emailed_at
(
user
)
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sun, Dec 7, 9:25 PM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
637738
Default Alt Text
digest_email_worker.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment