fix quoting of custom emoji
[akkoma] / lib / pleroma / web / activity_pub / utils.ex
index cca58e0daecd7447e94264f1fa7622263e152932..637db384042347fdfcb10e8319636a4611c7e896 100644 (file)
@@ -350,14 +350,15 @@ defmodule Pleroma.Web.ActivityPub.Utils do
     reactions = get_cached_emoji_reactions(object)
     emoji = stripped_emoji_name(emoji)
     url = emoji_url(emoji, activity)
+
     new_reactions =
       case Enum.find_index(reactions, fn [candidate, _, candidate_url] ->
-        if is_nil(candidate_url) do
-            emoji == candidate
-        else
-            url == candidate_url
-        end
-      end) do
+             if is_nil(candidate_url) do
+               emoji == candidate
+             else
+               url == candidate_url
+             end
+           end) do
         nil ->
           reactions ++ [[emoji, [actor], url]]
 
@@ -380,12 +381,18 @@ defmodule Pleroma.Web.ActivityPub.Utils do
     |> String.replace_trailing(":", "")
   end
 
-  defp emoji_url(name,
-    %Activity{
-        data: %{"tag" => [
-            %{"type" => "Emoji", "name" => name, "icon" => %{"url" => url}}
-        ]}
-    }), do: url
+  defp emoji_url(
+         name,
+         %Activity{
+           data: %{
+             "tag" => [
+               %{"type" => "Emoji", "name" => name, "icon" => %{"url" => url}}
+             ]
+           }
+         }
+       ),
+       do: url
+
   defp emoji_url(_, _), do: nil
 
   def emoji_count(reactions_list) do
@@ -399,14 +406,15 @@ defmodule Pleroma.Web.ActivityPub.Utils do
     emoji = stripped_emoji_name(emoji)
     reactions = get_cached_emoji_reactions(object)
     url = emoji_url(emoji, activity)
+
     new_reactions =
       case Enum.find_index(reactions, fn [candidate, _, candidate_url] ->
-        if is_nil(candidate_url) do
-            emoji == candidate
-        else
-            url == candidate_url
-        end
-      end) do
+             if is_nil(candidate_url) do
+               emoji == candidate
+             else
+               url == candidate_url
+             end
+           end) do
         nil ->
           reactions
 
@@ -535,12 +543,10 @@ defmodule Pleroma.Web.ActivityPub.Utils do
   end
 
   def get_latest_reaction(internal_activity_id, %{ap_id: ap_id}, emoji) do
+    IO.inspect(emoji)
     %{data: %{"object" => object_ap_id}} = Activity.get_by_id(internal_activity_id)
-    emoji = if String.starts_with?(emoji, ":") do
-      emoji
-    else
-      ":#{emoji}:"
-    end
+
+    emoji = Pleroma.Emoji.maybe_quote(emoji)
 
     "EmojiReact"
     |> Activity.Queries.by_type()