Browse Source

Disable NewUsersDigestEmail by default

chore/tag-settings-with-reboot
Egor Kislitsyn 4 years ago
parent
commit
aa0f0d4edd
No known key found for this signature in database GPG Key ID: 1B49CB15B71E7805
3 changed files with 43 additions and 37 deletions
  1. +2
    -0
      config/config.exs
  2. +2
    -0
      config/test.exs
  3. +39
    -37
      lib/pleroma/workers/new_users_digest_worker.ex

+ 2
- 0
config/config.exs View File

@@ -581,6 +581,8 @@ config :pleroma, Pleroma.Emails.UserEmail,
text_muted_color: "#b9b9ba"
}

config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: false

config :prometheus, Pleroma.Web.Endpoint.MetricsExporter, path: "/api/pleroma/app_metrics"

config :pleroma, Pleroma.ScheduledActivity,


+ 2
- 0
config/test.exs View File

@@ -97,6 +97,8 @@ config :pleroma, Pleroma.ReverseProxy.Client, Pleroma.ReverseProxy.ClientMock

config :pleroma, :modules, runtime_dir: "test/fixtures/modules"

config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: true

if File.exists?("./config/test.secret.exs") do
import_config "test.secret.exs"
else


+ 39
- 37
lib/pleroma/workers/new_users_digest_worker.ex View File

@@ -13,44 +13,46 @@ defmodule Pleroma.Workers.NewUsersDigestWorker do

@impl Oban.Worker
def perform(_args, _job) do
today = NaiveDateTime.utc_now() |> Timex.beginning_of_day()

a_day_ago =
today
|> Timex.shift(days: -1)
|> Timex.beginning_of_day()

users_and_statuses =
%{
local: true,
order_by: :inserted_at
}
if Pleroma.Config.get([Pleroma.Emails.NewUsersDigestEmail, :enabled]) do
today = NaiveDateTime.utc_now() |> Timex.beginning_of_day()

a_day_ago =
today
|> Timex.shift(days: -1)
|> Timex.beginning_of_day()

users_and_statuses =
%{
local: true,
order_by: :inserted_at
}
|> User.Query.build()
|> where([u], u.inserted_at >= ^a_day_ago and u.inserted_at < ^today)
|> Repo.all()
|> Enum.map(fn user ->
latest_status =
Activity
|> Activity.Queries.by_actor(user.ap_id)
|> Activity.Queries.by_type("Create")
|> Activity.with_preloaded_object()
|> order_by(desc: :inserted_at)
|> limit(1)
|> Repo.one()

total_statuses =
Activity
|> Activity.Queries.by_actor(user.ap_id)
|> Activity.Queries.by_type("Create")
|> Repo.aggregate(:count, :id)

{user, total_statuses, latest_status}
end)

%{is_admin: true}
|> User.Query.build()
|> where([u], u.inserted_at >= ^a_day_ago and u.inserted_at < ^today)
|> Repo.all()
|> Enum.map(fn user ->
latest_status =
Activity
|> Activity.Queries.by_actor(user.ap_id)
|> Activity.Queries.by_type("Create")
|> Activity.with_preloaded_object()
|> order_by(desc: :inserted_at)
|> limit(1)
|> Repo.one()

total_statuses =
Activity
|> Activity.Queries.by_actor(user.ap_id)
|> Activity.Queries.by_type("Create")
|> Repo.aggregate(:count, :id)

{user, total_statuses, latest_status}
end)

%{is_admin: true}
|> User.Query.build()
|> Repo.all()
|> Enum.map(&Pleroma.Emails.NewUsersDigestEmail.new_users(&1, users_and_statuses))
|> Enum.each(&Pleroma.Emails.Mailer.deliver/1)
|> Enum.map(&Pleroma.Emails.NewUsersDigestEmail.new_users(&1, users_and_statuses))
|> Enum.each(&Pleroma.Emails.Mailer.deliver/1)
end
end
end

Loading…
Cancel
Save