Merge branch 'develop' of https://git.pleroma.social/pleroma/pleroma into develop
[akkoma] / lib / pleroma / web / activity_pub / utils.ex
index 4def431f152518fdcb0f0d6880f1db42dce5742b..4f7fdaf38a1796d00b5bfb6480f9bab5e7107b97 100644 (file)
@@ -337,7 +337,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do
         %Activity{data: %{"content" => emoji, "actor" => actor}},
         object
       ) do
-    reactions = object.data["reactions"] || []
+    reactions = get_cached_emoji_reactions(object)
 
     new_reactions =
       case Enum.find_index(reactions, fn [candidate, _] -> emoji == candidate end) do
@@ -365,7 +365,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do
         %Activity{data: %{"content" => emoji, "actor" => actor}},
         object
       ) do
-    reactions = object.data["reactions"] || []
+    reactions = get_cached_emoji_reactions(object)
 
     new_reactions =
       case Enum.find_index(reactions, fn [candidate, _] -> emoji == candidate end) do
@@ -385,6 +385,14 @@ defmodule Pleroma.Web.ActivityPub.Utils do
     update_element_in_object("reaction", new_reactions, object, count)
   end
 
+  def get_cached_emoji_reactions(object) do
+    if is_list(object.data["reactions"]) do
+      object.data["reactions"]
+    else
+      []
+    end
+  end
+
   @spec add_like_to_object(Activity.t(), Object.t()) ::
           {:ok, Object.t()} | {:error, Ecto.Changeset.t()}
   def add_like_to_object(%Activity{data: %{"actor" => actor}}, object) do