diff options
author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-08-24 13:43:02 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2020-09-10 21:50:41 +0300 |
commit | de4c935071a47c78d873484b202e09dce5399570 (patch) | |
tree | 0c2fde482c9f08773ad5593173e0da61f1e6c856 /lib/pleroma/workers | |
parent | 9bf1065a06837b4c753549d89afe23a636a20972 (diff) | |
download | pleroma-de4c935071a47c78d873484b202e09dce5399570.tar.gz |
don't expire pinned posts
Diffstat (limited to 'lib/pleroma/workers')
-rw-r--r-- | lib/pleroma/workers/purge_expired_activity.ex | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 016b000c1..ba0053008 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -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", |