aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/application.ex
diff options
context:
space:
mode:
authorRoman Chvanikov <chvanikoff@gmail.com>2019-04-20 19:42:19 +0700
committerRoman Chvanikov <chvanikoff@gmail.com>2019-04-20 19:42:19 +0700
commit64a2c6a041ca62ad84b1d682ef56fbca45e44de5 (patch)
tree235560f05e44f3b330613c3dae57a77924d865a2 /lib/pleroma/application.ex
parent73407f4eea7793c93981a87bb7eddef4f8daab7c (diff)
downloadpleroma-64a2c6a041ca62ad84b1d682ef56fbca45e44de5.tar.gz
Digest emails
Diffstat (limited to 'lib/pleroma/application.ex')
-rw-r--r--lib/pleroma/application.ex22
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index eeb415084..76f8d9bcd 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -105,7 +105,8 @@ defmodule Pleroma.Application do
id: :cachex_idem
),
worker(Pleroma.FlakeId, []),
- worker(Pleroma.ScheduledActivityWorker, [])
+ worker(Pleroma.ScheduledActivityWorker, []),
+ worker(Pleroma.QuantumScheduler, [])
] ++
hackney_pool_children() ++
[
@@ -125,7 +126,9 @@ defmodule Pleroma.Application do
# See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
# for other strategies and supported options
opts = [strategy: :one_for_one, name: Pleroma.Supervisor]
- Supervisor.start_link(children, opts)
+ result = Supervisor.start_link(children, opts)
+ :ok = after_supervisor_start()
+ result
end
defp setup_instrumenters do
@@ -183,4 +186,19 @@ defmodule Pleroma.Application do
:hackney_pool.child_spec(pool, options)
end
end
+
+ defp after_supervisor_start() do
+ with digest_config <- Application.get_env(:pleroma, :email_notifications)[:digest],
+ true <- digest_config[:active],
+ %Crontab.CronExpression{} = schedule <-
+ Crontab.CronExpression.Parser.parse!(digest_config[:schedule]) do
+ Pleroma.QuantumScheduler.new_job()
+ |> Quantum.Job.set_name(:digest_emails)
+ |> Quantum.Job.set_schedule(schedule)
+ |> Quantum.Job.set_task(&Pleroma.DigestEmailWorker.run/0)
+ |> Pleroma.QuantumScheduler.add_job()
+ end
+
+ :ok
+ end
end