aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/user.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/user.ex
parent73407f4eea7793c93981a87bb7eddef4f8daab7c (diff)
downloadpleroma-64a2c6a041ca62ad84b1d682ef56fbca45e44de5.tar.gz
Digest emails
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r--lib/pleroma/user.ex36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 7053dfaf3..2509d2366 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -1484,4 +1484,40 @@ defmodule Pleroma.User do
is_nil(max(a.inserted_at))
)
end
+
+ @doc """
+ Enable or disable email notifications for user
+
+ ## Examples
+
+ iex> Pleroma.User.switch_email_notifications(Pleroma.User{info: %{email_notifications: %{"digest" => false}}}, "digest", true)
+ Pleroma.User{info: %{email_notifications: %{"digest" => true}}}
+
+ iex> Pleroma.User.switch_email_notifications(Pleroma.User{info: %{email_notifications: %{"digest" => true}}}, "digest", false)
+ Pleroma.User{info: %{email_notifications: %{"digest" => false}}}
+ """
+ @spec switch_email_notifications(t(), String.t(), boolean()) ::
+ {:ok, t()} | {:error, Ecto.Changeset.t()}
+ def switch_email_notifications(user, type, status) do
+ info = Pleroma.User.Info.update_email_notifications(user.info, %{type => status})
+
+ change(user)
+ |> put_embed(:info, info)
+ |> update_and_set_cache()
+ end
+
+ @doc """
+ Set `last_digest_emailed_at` value for the user to current time
+ """
+ @spec touch_last_digest_emailed_at(t()) :: t()
+ def touch_last_digest_emailed_at(user) do
+ now = NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second)
+
+ {:ok, updated_user} =
+ user
+ |> change(%{last_digest_emailed_at: now})
+ |> update_and_set_cache()
+
+ updated_user
+ end
end