aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/user
diff options
context:
space:
mode:
authorMaksim Pechnikov <parallel588@gmail.com>2019-10-28 12:47:23 +0300
committerMaksim Pechnikov <parallel588@gmail.com>2019-11-28 22:08:30 +0300
commita52da55eb9c6bbf8a08bf1d90d59a48dc25f5907 (patch)
tree766d151dfa013931b636b723746061bbeb4f1429 /lib/pleroma/user
parentca1acfa314a57f78c2f5f8e60a4bd1380350e483 (diff)
downloadpleroma-a52da55eb9c6bbf8a08bf1d90d59a48dc25f5907.tar.gz
added User.NotificationSetting struct
Diffstat (limited to 'lib/pleroma/user')
-rw-r--r--lib/pleroma/user/notification_setting.ex49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/pleroma/user/notification_setting.ex b/lib/pleroma/user/notification_setting.ex
new file mode 100644
index 000000000..64100c0e6
--- /dev/null
+++ b/lib/pleroma/user/notification_setting.ex
@@ -0,0 +1,49 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.User.NotificationSetting do
+ use Ecto.Schema
+ import Ecto.Changeset
+
+ @derive Jason.Encoder
+ @primary_key false
+
+ @privacy_options %{
+ name_and_message: "name_and_message",
+ name_only: "name_only",
+ no_name_or_message: "no_name_or_message"
+ }
+
+ embedded_schema do
+ field(:followers, :boolean, default: true)
+ field(:follows, :boolean, default: true)
+ field(:non_follows, :boolean, default: true)
+ field(:non_followers, :boolean, default: true)
+ field(:privacy_option, :string, default: @privacy_options.name_and_message)
+ end
+
+ def changeset(schema, params) do
+ schema
+ |> cast(prepare_attrs(params), [
+ :followers,
+ :follows,
+ :non_follows,
+ :non_followers,
+ :privacy_option
+ ])
+ |> validate_inclusion(:privacy_option, Map.values(@privacy_options))
+ end
+
+ defp prepare_attrs(params) do
+ Enum.reduce(params, %{}, fn
+ {k, v}, acc
+ when k in ["followers", "follows", "non_follows", "non_followers"] and
+ is_binary(v) ->
+ Map.put(acc, k, String.downcase(v))
+
+ {k, v}, acc ->
+ Map.put(acc, k, v)
+ end)
+ end
+end