Fix note counting.
[akkoma] / lib / pleroma / user / info.ex
1 defmodule Pleroma.User.Info do
2 use Ecto.Schema
3 import Ecto.Changeset
4
5 embedded_schema do
6 field :banner, :map, default: %{}
7 field :source_data, :map, default: %{}
8 field :note_count, :integer, default: 0
9 field :follower_count, :integer, default: 0
10 field :locked, :boolean, default: false
11 field :default_scope, :string, default: "public"
12 field :blocks, {:array, :string}, default: []
13 field :domain_blocks, {:array, :string}, default: []
14 field :deactivated, :boolean, default: false
15 field :no_rich_text, :boolean, default: false
16 field :ap_enabled, :boolean, default: false
17 field :keys, :map, default: %{}
18 end
19
20 def set_activation_status(info, deactivated) do
21 params = %{deactivated: deactivated}
22
23 info
24 |> cast(params, [:deactivated])
25 |> validate_required([:deactivated])
26 end
27
28 def add_to_note_count(info, number) do
29 params = %{note_count: Enum.max([0, info.note_count + number])}
30
31 info
32 |> cast(params, [:note_count])
33 |> validate_required([:note_count])
34 end
35 end