add pinned posts

This commit is contained in:
Egor Kislitsyn 2019-01-07 20:45:33 +07:00
commit 380e9fba21
8 changed files with 242 additions and 7 deletions

View file

@ -31,6 +31,7 @@ defmodule Pleroma.User.Info do
field(:hub, :string, default: nil)
field(:salmon, :string, default: nil)
field(:hide_network, :boolean, default: false)
field(:pinned_activities, {:array, :integer}, default: [])
# Found in the wild
# ap_id -> Where is this used?
@ -198,4 +199,26 @@ defmodule Pleroma.User.Info do
:is_admin
])
end
def add_pinnned_activity(info, %Pleroma.Activity{id: id}) do
if id not in info.pinned_activities do
max_pinned_posts = Pleroma.Config.get([:instance, :max_pinned_posts], 0)
params = %{pinned_activities: info.pinned_activities ++ [id]}
info
|> cast(params, [:pinned_activities])
|> validate_length(:pinned_activities,
max: max_pinned_posts,
message: "You have already pinned the maximum number of toots"
)
else
change(info)
end
end
def remove_pinnned_activity(info, %Pleroma.Activity{id: id}) do
params = %{pinned_activities: List.delete(info.pinned_activities, id)}
cast(info, params, [:pinned_activities])
end
end