aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoman Chvanikov <chvanikoff@gmail.com>2019-06-04 02:48:21 +0300
committerRoman Chvanikov <chvanikoff@gmail.com>2019-06-04 02:48:21 +0300
commit3e1761058711b12fa995f2b43117fb90ca40c9ad (patch)
tree5c1a84023e26d58570e6e6f90830ac13df6862d0 /lib
parent6ef145b4fc3f2ddb5865e84039c3b56656529711 (diff)
downloadpleroma-3e1761058711b12fa995f2b43117fb90ca40c9ad.tar.gz
Add task to test emails
Diffstat (limited to 'lib')
-rw-r--r--lib/mix/tasks/pleroma/digest.ex34
-rw-r--r--lib/pleroma/digest_email_worker.ex4
-rw-r--r--lib/pleroma/emails/user_email.ex20
-rw-r--r--lib/pleroma/web/templates/email/digest.html.eex4
4 files changed, 54 insertions, 8 deletions
diff --git a/lib/mix/tasks/pleroma/digest.ex b/lib/mix/tasks/pleroma/digest.ex
new file mode 100644
index 000000000..7ac3df5c7
--- /dev/null
+++ b/lib/mix/tasks/pleroma/digest.ex
@@ -0,0 +1,34 @@
+defmodule Mix.Tasks.Pleroma.Digest do
+ use Mix.Task
+ alias Mix.Tasks.Pleroma.Common
+
+ @shortdoc "Manages digest emails"
+ @moduledoc """
+ Manages digest emails
+
+ ## Send digest email since given date (user registration date by default)
+ ignoring user activity status.
+
+ ``mix pleroma.digest test <nickname> <since_date>``
+
+ Example: ``mix pleroma.digest test donaldtheduck 2019-05-20``
+ """
+ def run(["test", nickname | opts]) do
+ Common.start_pleroma()
+
+ user = Pleroma.User.get_by_nickname(nickname)
+
+ last_digest_emailed_at =
+ with [date] <- opts,
+ {:ok, datetime} <- Timex.parse(date, "{YYYY}-{0M}-{0D}") do
+ datetime
+ else
+ _ -> user.inserted_at
+ end
+
+ patched_user = %{user | last_digest_emailed_at: last_digest_emailed_at}
+
+ :ok = Pleroma.DigestEmailWorker.run([patched_user])
+ Mix.shell().info("Digest email have been sent to #{nickname} (#{user.email})")
+ end
+end
diff --git a/lib/pleroma/digest_email_worker.ex b/lib/pleroma/digest_email_worker.ex
index f7b3d81cd..8c28dca18 100644
--- a/lib/pleroma/digest_email_worker.ex
+++ b/lib/pleroma/digest_email_worker.ex
@@ -18,9 +18,9 @@ defmodule Pleroma.DigestEmailWorker do
|> run()
end
- defp run([]), do: :ok
+ def run([]), do: :ok
- defp run([user | users]) do
+ def run([user | users]) do
with %Swoosh.Email{} = email <- Pleroma.Emails.UserEmail.digest_email(user) do
Pleroma.Emails.Mailer.deliver_async(email)
end
diff --git a/lib/pleroma/emails/user_email.ex b/lib/pleroma/emails/user_email.ex
index 64f855112..0ad0aed40 100644
--- a/lib/pleroma/emails/user_email.ex
+++ b/lib/pleroma/emails/user_email.ex
@@ -103,12 +103,24 @@ defmodule Pleroma.Emails.UserEmail do
new_notifications =
Pleroma.Notification.for_user_since(user, user.last_digest_emailed_at)
|> Enum.reduce(%{followers: [], mentions: []}, fn
- %{activity: %{data: %{"type" => "Create"}, actor: actor}} = notification, acc ->
- new_mention = %{data: notification, from: Pleroma.User.get_by_ap_id(actor)}
+ %{activity: %{data: %{"type" => "Create"}, actor: actor} = activity} = notification,
+ acc ->
+ new_mention = %{
+ data: notification,
+ object: Pleroma.Object.normalize(activity),
+ from: Pleroma.User.get_by_ap_id(actor)
+ }
+
%{acc | mentions: [new_mention | acc.mentions]}
- %{activity: %{data: %{"type" => "Follow"}, actor: actor}} = notification, acc ->
- new_follower = %{data: notification, from: Pleroma.User.get_by_ap_id(actor)}
+ %{activity: %{data: %{"type" => "Follow"}, actor: actor} = activity} = notification,
+ acc ->
+ new_follower = %{
+ data: notification,
+ object: Pleroma.Object.normalize(activity),
+ from: Pleroma.User.get_by_ap_id(actor)
+ }
+
%{acc | followers: [new_follower | acc.followers]}
_, acc ->
diff --git a/lib/pleroma/web/templates/email/digest.html.eex b/lib/pleroma/web/templates/email/digest.html.eex
index 93c9c884f..c9dd699fd 100644
--- a/lib/pleroma/web/templates/email/digest.html.eex
+++ b/lib/pleroma/web/templates/email/digest.html.eex
@@ -2,8 +2,8 @@
<h2>New Mentions:</h2>
<ul>
-<%= for %{data: mention, from: from} <- @mentions do %>
- <li><%= link from.nickname, to: mention.activity.actor %>: <%= raw mention.activity.object.data["content"] %></li>
+<%= for %{data: mention, object: object, from: from} <- @mentions do %>
+ <li><%= link from.nickname, to: mention.activity.actor %>: <%= raw object.data["content"] %></li>
<% end %>
</ul>