[#1149] Added more oban workers. Refactoring.
[akkoma] / lib / pleroma / workers / publisher.ex
index 6397948308c5983b79a256f37eb44c529ec4b394..c890ffb79b4c00a44ac32412dbb7f711fad4efc3 100644 (file)
@@ -3,12 +3,21 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Workers.Publisher do
-  use Oban.Worker, queue: "federator_outgoing", max_attempts: 5
+  alias Pleroma.Activity
+  alias Pleroma.Web.Federator
+
+  # Note: `max_attempts` is intended to be overridden in `new/1` call
+  use Oban.Worker,
+    queue: "federator_outgoing",
+    max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default])
 
   @impl Oban.Worker
-  def perform(%Oban.Job{args: %{module: module_name, params: params}}) do
-    module_name
-    |> String.to_atom()
-    |> apply(:publish_one, [params])
+  def perform(%{"op" => "publish", "activity_id" => activity_id}) do
+    activity = Activity.get_by_id(activity_id)
+    Federator.perform(:publish, activity)
+  end
+
+  def perform(%{"op" => "publish_one", "module" => module_name, "params" => params}) do
+    Federator.perform(:publish_one, String.to_atom(module_name), params)
   end
 end