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.ScheduledActivityWorker do
7 The worker to post scheduled activity.
10 use Pleroma.Workers.WorkerHelper, queue: "scheduled_activities"
13 alias Pleroma.ScheduledActivity
15 alias Pleroma.Web.CommonAPI
20 def perform(%{"activity_id" => activity_id}, _job) do
21 if Config.get([ScheduledActivity, :enabled]) do
22 case Pleroma.Repo.get(ScheduledActivity, activity_id) do
23 %ScheduledActivity{} = scheduled_activity ->
24 post_activity(scheduled_activity)
27 Logger.error("#{__MODULE__} Couldn't find scheduled activity: #{activity_id}")
32 defp post_activity(%ScheduledActivity{} = scheduled_activity) do
34 {:ok, scheduled_activity} = ScheduledActivity.delete(scheduled_activity)
35 %User{} = user = User.get_cached_by_id(scheduled_activity.user_id)
36 {:ok, _result} = CommonAPI.post(user, scheduled_activity.params)
40 "#{__MODULE__} Couldn't create a status from the scheduled activity: #{inspect(error)}"