1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker do
7 The worker to purge expired activities.
10 use Oban.Worker, queue: "activity_expiration"
12 alias Pleroma.Activity
13 alias Pleroma.ActivityExpiration
16 alias Pleroma.Web.CommonAPI
20 @interval :timer.minutes(1)
23 def perform(_opts, _job) do
24 if Config.get([ActivityExpiration, :enabled]) do
25 Enum.each(ActivityExpiration.due_expirations(@interval), &delete_activity/1)
29 def delete_activity(expiration) do
31 activity = Activity.get_by_id_with_object(expiration.activity_id)
32 user = User.get_by_ap_id(activity.object.data["actor"])
33 CommonAPI.delete(activity.id, user)
36 Logger.error("#{__MODULE__} Couldn't delete expired activity: #{inspect(error)}")