diff options
author | lain <lain@soykaf.club> | 2019-08-08 14:38:33 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-08-08 14:38:33 +0000 |
commit | 29807ef6a5b43a528ffca08b4f721b251f331c8d (patch) | |
tree | 76930c3a3dc12b95bcb57a9b4832f861dd68d960 /lib/pleroma/user | |
parent | b18234e04c76daa564e0d8157dcd09566485da24 (diff) | |
parent | 9d4f34fbcb1a8e2eca424b3a3374c9f9af972574 (diff) | |
download | pleroma-29807ef6a5b43a528ffca08b4f721b251f331c8d.tar.gz |
Merge branch 'feature/digest-email' into 'develop'
Feature/digest email
See merge request pleroma/pleroma!1078
Diffstat (limited to 'lib/pleroma/user')
-rw-r--r-- | lib/pleroma/user/info.ex | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index b03e705c3..22eb9a182 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -45,6 +45,7 @@ defmodule Pleroma.User.Info do field(:hide_follows, :boolean, default: false) field(:hide_favorites, :boolean, default: true) field(:pinned_activities, {:array, :string}, default: []) + field(:email_notifications, :map, default: %{"digest" => false}) field(:mascot, :map, default: nil) field(:emoji, {:array, :map}, default: []) field(:pleroma_settings_store, :map, default: %{}) @@ -95,6 +96,30 @@ defmodule Pleroma.User.Info do |> validate_required([:notification_settings]) end + @doc """ + Update email notifications in the given User.Info struct. + + Examples: + + iex> update_email_notifications(%Pleroma.User.Info{email_notifications: %{"digest" => false}}, %{"digest" => true}) + %Pleroma.User.Info{email_notifications: %{"digest" => true}} + + """ + @spec update_email_notifications(t(), map()) :: Ecto.Changeset.t() + def update_email_notifications(info, settings) do + email_notifications = + info.email_notifications + |> Map.merge(settings) + |> Map.take(["digest"]) + + params = %{email_notifications: email_notifications} + fields = [:email_notifications] + + info + |> cast(params, fields) + |> validate_required(fields) + end + def add_to_note_count(info, number) do set_note_count(info, info.note_count + number) end |