make search provider configurable
[akkoma] / lib / pleroma / web / common_api.ex
index 1b5f8491efa0ddff51ce3d7769f50ec208df3a5a..0c93b1976950ddd58926d8c67d5d821b9e9e4db2 100644 (file)
@@ -16,6 +16,8 @@ defmodule Pleroma.Web.CommonAPI do
   alias Pleroma.Web.ActivityPub.Utils
   alias Pleroma.Web.ActivityPub.Visibility
   alias Pleroma.Web.CommonAPI.ActivityDraft
+  alias Pleroma.Elasticsearch
+  alias Pleroma.Config
 
   import Pleroma.Web.Gettext
   import Pleroma.Web.CommonAPI.Utils
@@ -395,9 +397,25 @@ defmodule Pleroma.Web.CommonAPI do
     end
   end
 
+  def maybe_put_into_elasticsearch({:ok, activity}) do
+    if Config.get([:search, :provider]) == Pleroma.Search.Elasticsearch do
+      actor = Pleroma.Activity.user_actor(activity)
+
+      activity
+      |> Map.put(:user_actor, actor)
+      |> Elasticsearch.put()
+    end
+  end
+
+  def maybe_put_into_elasticsearch(_) do
+    {:ok, :skipped}
+  end
+
   def post(user, %{status: _} = data) do
     with {:ok, draft} <- ActivityDraft.create(user, data) do
-      ActivityPub.create(draft.changes, draft.preview?)
+      activity = ActivityPub.create(draft.changes, draft.preview?)
+      maybe_put_into_elasticsearch(activity)
+      activity
     end
   end
 
@@ -487,9 +505,7 @@ defmodule Pleroma.Web.CommonAPI do
     else
       {what, result} = error ->
         Logger.warn(
-          "CommonAPI.remove_mute/2 failed. #{what}: #{result}, user_id: #{user_id}, activity_id: #{
-            activity_id
-          }"
+          "CommonAPI.remove_mute/2 failed. #{what}: #{result}, user_id: #{user_id}, activity_id: #{activity_id}"
         )
 
         {:error, error}