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.ScheduledActivityWorker do
7 The worker to post scheduled actvities.
10 use Oban.Worker, queue: "scheduled_activities"
12 alias Pleroma.ScheduledActivity
14 alias Pleroma.Web.CommonAPI
18 @schedule_interval :timer.minutes(1)
21 def perform(_opts, _job) do
22 if Config.get([ScheduledActivity, :enabled]) do
24 |> ScheduledActivity.due_activities()
25 |> Enum.each(&post_activity/1)
29 def post_activity(scheduled_activity) do
31 {:ok, scheduled_activity} = ScheduledActivity.delete(scheduled_activity)
32 %User{} = user = User.get_cached_by_id(scheduled_activity.user_id)
33 {:ok, _result} = CommonAPI.post(user, scheduled_activity.params)
37 "#{__MODULE__} Couldn't create a status from the scheduled activity: #{inspect(error)}"