e47ac4cab130048899f997dcc11313532a6410cf
[akkoma] / lib / pleroma / user / notification_setting.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.User.NotificationSetting do
6 use Ecto.Schema
7 import Ecto.Changeset
8
9 @derive Jason.Encoder
10 @primary_key false
11
12 embedded_schema do
13 field(:from_followers, :boolean, default: true)
14 field(:from_following, :boolean, default: true)
15 field(:from_strangers, :boolean, default: true)
16 field(:privacy_option, :boolean, default: false)
17 end
18
19 def changeset(schema, params) do
20 schema
21 |> cast(prepare_attrs(params), [
22 :from_followers,
23 :from_following,
24 :from_strangers,
25 :privacy_option
26 ])
27 end
28
29 defp prepare_attrs(params) do
30 Enum.reduce(params, %{}, fn
31 {k, v}, acc when is_binary(v) ->
32 Map.put(acc, k, String.downcase(v))
33
34 {k, v}, acc ->
35 Map.put(acc, k, v)
36 end)
37 end
38 end