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
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
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}} <-