Update DigestEmailWorker to compile and send emails via queue
This commit is contained in:
parent
168dc97c37
commit
b052a9d4d0
2 changed files with 10 additions and 7 deletions
|
@ -27,7 +27,7 @@ def run(["test", nickname | opts]) do
|
|||
|
||||
patched_user = %{user | last_digest_emailed_at: last_digest_emailed_at}
|
||||
|
||||
:ok = Pleroma.DigestEmailWorker.run([patched_user])
|
||||
_user = Pleroma.DigestEmailWorker.perform(patched_user)
|
||||
Mix.shell().info("Digest email have been sent to #{nickname} (#{user.email})")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
defmodule Pleroma.DigestEmailWorker do
|
||||
import Ecto.Query
|
||||
|
||||
@queue_name :digest_emails
|
||||
|
||||
def run do
|
||||
config = Pleroma.Config.get([:email_notifications, :digest])
|
||||
negative_interval = -Map.fetch!(config, :interval)
|
||||
|
@ -15,18 +17,19 @@ def run do
|
|||
select: u
|
||||
)
|
||||
|> Pleroma.Repo.all()
|
||||
|> run()
|
||||
|> Enum.each(&PleromaJobQueue.enqueue(@queue_name, __MODULE__, [&1]))
|
||||
end
|
||||
|
||||
def run([]), do: :ok
|
||||
|
||||
def run([user | users]) do
|
||||
@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)
|
||||
|
||||
run(users)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue