aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/workers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/workers')
-rw-r--r--lib/pleroma/workers/purge_expired_activity.ex18
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",