pin/unpin for activities with expires_at option
This commit is contained in:
parent
b3485a6dbf
commit
eb5ff715f7
5 changed files with 64 additions and 46 deletions
|
|
@ -31,18 +31,8 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do
|
|||
@impl true
|
||||
def perform(%Oban.Job{args: %{"activity_id" => id}}) do
|
||||
with %Activity{} = activity <- find_activity(id),
|
||||
%Pleroma.User{} = user <- find_user(activity.object.data["actor"]),
|
||||
false <- pinned_by_actor?(activity, user) do
|
||||
%Pleroma.User{} = user <- find_user(activity.object.data["actor"]) 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
|
||||
|
||||
|
|
@ -74,12 +64,6 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do
|
|||
end
|
||||
end
|
||||
|
||||
defp pinned_by_actor?(activity, user) do
|
||||
with true <- 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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue