From e910f21d8d0246010956385be5bad486243d8e4c Mon Sep 17 00:00:00 2001 From: FloatingGhost Date: Wed, 8 Jun 2022 13:27:25 +0100 Subject: [PATCH] allow undoing --- lib/pleroma/web/activity_pub/utils.ex | 28 +++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 83bb8a552..cca58e0da 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -349,10 +349,17 @@ defmodule Pleroma.Web.ActivityPub.Utils do ) 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, _, _] -> emoji == candidate end) do + case Enum.find_index(reactions, fn [candidate, _, candidate_url] -> + if is_nil(candidate_url) do + emoji == candidate + else + url == candidate_url + end + end) do nil -> - reactions ++ [[emoji, [actor], emoji_url(emoji, activity)]] + reactions ++ [[emoji, [actor], url]] index -> List.update_at( @@ -386,12 +393,20 @@ defmodule Pleroma.Web.ActivityPub.Utils do end def remove_emoji_reaction_from_object( - %Activity{data: %{"content" => emoji, "actor" => actor}}, + %Activity{data: %{"content" => emoji, "actor" => actor}} = activity, object ) 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, _, _] -> emoji == candidate end) do + case Enum.find_index(reactions, fn [candidate, _, candidate_url] -> + if is_nil(candidate_url) do + emoji == candidate + else + url == candidate_url + end + end) do nil -> reactions @@ -521,6 +536,11 @@ defmodule Pleroma.Web.ActivityPub.Utils do def get_latest_reaction(internal_activity_id, %{ap_id: ap_id}, emoji) do %{data: %{"object" => object_ap_id}} = Activity.get_by_id(internal_activity_id) + emoji = if String.starts_with?(emoji, ":") do + emoji + else + ":#{emoji}:" + end "EmojiReact" |> Activity.Queries.by_type() -- 2.44.2