don't expire pinned posts

This commit is contained in:
Alexander Strizhakov 2020-08-24 13:43:02 +03:00 committed by rinpatch
commit de4c935071
3 changed files with 45 additions and 3 deletions

View file

@ -21,8 +21,18 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do
@impl true
def perform(%Oban.Job{args: %{"activity_id" => id}}) do
with %Pleroma.Activity{} = activity <- find_activity(id),
%Pleroma.User{} = user <- find_user(activity.object.data["actor"]) do
%Pleroma.User{} = user <- find_user(activity.object.data["actor"]),
false <- pinned_by_actor?(activity, user) do
Pleroma.Web.CommonAPI.delete(activity.id, user)
else
:pinned_by_actor ->
# if activity is pinned, schedule deletion on next day
enqueue(%{activity_id: id, expires_at: DateTime.add(DateTime.utc_now(), 24 * 3600)})
:ok
error ->
error
end
end
@ -54,6 +64,12 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do
end
end
defp pinned_by_actor?(activity, user) do
with true <- Pleroma.Activity.pinned_by_actor?(activity, user) do
:pinned_by_actor
end
end
def get_expiration(id) do
from(j in Oban.Job,
where: j.state == "scheduled",