allow undoing

This commit is contained in:
FloatingGhost 2022-06-08 13:27:25 +01:00
parent e724da2a42
commit e910f21d8d

View file

@ -349,10 +349,17 @@ def add_emoji_reaction_to_object(
) do ) do
reactions = get_cached_emoji_reactions(object) reactions = get_cached_emoji_reactions(object)
emoji = stripped_emoji_name(emoji) emoji = stripped_emoji_name(emoji)
url = emoji_url(emoji, activity)
new_reactions = 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 -> nil ->
reactions ++ [[emoji, [actor], emoji_url(emoji, activity)]] reactions ++ [[emoji, [actor], url]]
index -> index ->
List.update_at( List.update_at(
@ -386,12 +393,20 @@ def emoji_count(reactions_list) do
end end
def remove_emoji_reaction_from_object( def remove_emoji_reaction_from_object(
%Activity{data: %{"content" => emoji, "actor" => actor}}, %Activity{data: %{"content" => emoji, "actor" => actor}} = activity,
object object
) do ) do
emoji = stripped_emoji_name(emoji)
reactions = get_cached_emoji_reactions(object) reactions = get_cached_emoji_reactions(object)
url = emoji_url(emoji, activity)
new_reactions = 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 -> nil ->
reactions reactions
@ -521,6 +536,11 @@ def fetch_latest_undo(%User{ap_id: ap_id}) do
def get_latest_reaction(internal_activity_id, %{ap_id: ap_id}, emoji) 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) %{data: %{"object" => object_ap_id}} = Activity.get_by_id(internal_activity_id)
emoji = if String.starts_with?(emoji, ":") do
emoji
else
":#{emoji}:"
end
"EmojiReact" "EmojiReact"
|> Activity.Queries.by_type() |> Activity.Queries.by_type()