Merge remote-tracking branch 'pleroma/develop' into optional-config
[akkoma] / lib / pleroma / web / activity_pub / transmogrifier.ex
index b662f53796f56efd58b1dfa0e670887fae5a4427..d27d0bed4e11f096b52e1afaa404ddffa4b24305 100644 (file)
@@ -534,7 +534,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
   end
 
   def handle_incoming(%{"type" => type} = data, _options)
-      when type in ~w{Like EmojiReact Announce} do
+      when type in ~w{Like EmojiReact Announce Add Remove} do
     with :ok <- ObjectValidator.fetch_actor_and_object(data),
          {:ok, activity, _meta} <-
            Pipeline.common_pipeline(data, local: false) do
@@ -556,23 +556,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
     end
   end
 
-  def handle_incoming(%{"type" => type} = data, _options) when type in ~w(Add Remove) do
-    with {:ok, user} <- ObjectValidator.fetch_actor(data),
-         %Object{} <- Object.normalize(data["object"], fetch: true) do
-      # Mastodon sends pin/unpin objects without id, to, cc fields
-      data =
-        data
-        |> Map.put_new("id", Utils.generate_activity_id())
-        |> Map.put_new("to", [Pleroma.Constants.as_public()])
-        |> Map.put_new("cc", [user.follower_address])
-
-      case Pipeline.common_pipeline(data, local: false) do
-        {:ok, activity, _meta} -> {:ok, activity}
-        error -> error
-      end
-    end
-  end
-
   def handle_incoming(
         %{"type" => "Delete"} = data,
         _options
@@ -581,7 +564,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
            Pipeline.common_pipeline(data, local: false) do
       {:ok, activity}
     else
-      {:error, {:validate_object, _}} = e ->
+      {:error, {:validate, _}} = e ->
         # Check if we have a create activity for this
         with {:ok, object_id} <- ObjectValidators.ObjectID.cast(data["object"]),
              %Activity{data: %{"actor" => actor}} <-