X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Ftransmogrifier.ex;h=115dfc470c37f5447cd87cc353d11fbbea65435a;hb=0f132b802dde7f217ecb07767e0d34e3edb517b7;hp=142af1a13bb9ca0e6e212332ee15323979c282b5;hpb=1841bd8383d7734cb74cff91f61dc7e1fdfad13d;p=akkoma diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 142af1a13..115dfc470 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -384,52 +384,21 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do def handle_incoming(%{"id" => id}, _options) when is_binary(id) and byte_size(id) < 8, do: :error + @doc "Rewrite misskey likes into EmojiReacts" def handle_incoming( - %{"type" => "Listen", "object" => %{"type" => "Audio"} = object} = data, + %{ + "type" => "Like", + "_misskey_reaction" => reaction, + "tag" => _ + } = data, options ) do - actor = Containment.get_actor(data) - - data = - Map.put(data, "actor", actor) - |> fix_addressing - - with {:ok, %User{} = user} <- User.get_or_fetch_by_ap_id(data["actor"]) do - reply_depth = (options[:depth] || 0) + 1 - options = Keyword.put(options, :depth, reply_depth) - object = fix_object(object, options) - - params = %{ - to: data["to"], - object: object, - actor: user, - context: nil, - local: false, - published: data["published"], - additional: Map.take(data, ["cc", "id"]) - } - - ActivityPub.listen(params) - else - _e -> :error - end + data + |> Map.put("type", "EmojiReact") + |> Map.put("content", reaction) + |> handle_incoming(options) end - @misskey_reactions %{ - "like" => "👍", - "love" => "❤️", - "laugh" => "😆", - "hmm" => "🤔", - "surprise" => "😮", - "congrats" => "🎉", - "angry" => "💢", - "confused" => "😥", - "rip" => "😇", - "pudding" => "🍮", - "star" => "⭐" - } - - @doc "Rewrite misskey likes into EmojiReacts" def handle_incoming( %{ "type" => "Like", @@ -439,7 +408,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do ) do data |> Map.put("type", "EmojiReact") - |> Map.put("content", @misskey_reactions[reaction] || reaction) + |> Map.put("content", reaction) |> handle_incoming(options) end @@ -447,7 +416,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do %{"type" => "Create", "object" => %{"type" => objtype, "id" => obj_id}} = data, options ) - when objtype in ~w{Question Answer ChatMessage Audio Video Event Article Note Page} do + when objtype in ~w{Question Answer Audio Video Event Article Note Page} do fetch_options = Keyword.put(options, :depth, (options[:depth] || 0) + 1) object = @@ -472,11 +441,11 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do def handle_incoming(%{"type" => type} = data, _options) 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 + {:ok, activity, _meta} <- Pipeline.common_pipeline(data, local: false) do {:ok, activity} else - e -> {:error, e} + e -> + {:error, e} end end @@ -695,7 +664,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do # """ def prepare_outgoing(%{"type" => activity_type, "object" => object_id} = data) - when activity_type in ["Create", "Listen"] do + when activity_type in ["Create"] do object = object_id |> Object.normalize(fetch: false) @@ -877,9 +846,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do Map.put(object, "attributedTo", attributed_to) end - # TODO: Revisit this - def prepare_attachments(%{"type" => "ChatMessage"} = object), do: object - def prepare_attachments(object) do attachments = object