ActivityPub: Basic EmojiReactions.

This commit is contained in:
lain 2019-08-26 16:29:51 -05:00
commit 6e1ec4c5da
3 changed files with 42 additions and 0 deletions

View file

@ -312,6 +312,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
end
end
def react_with_emoji(user, object, emoji, options \\ []) do
with local <- Keyword.get(options, :local, true),
activity_id <- Keyword.get(options, :activity_id, nil),
is_emoji?(emoji),
reaction_data <- make_emoji_reaction_data(user, object, emoji, activity_id),
{:ok, activity} <- insert(reaction_data, local) do
{:ok, activity, object}
end
end
# TODO: This is weird, maybe we shouldn't check here if we can make the activity.
def like(
%User{ap_id: ap_id} = user,

View file

@ -296,6 +296,16 @@ defmodule Pleroma.Web.ActivityPub.Utils do
Repo.all(query)
end
def is_emoji?(emoji) do
String.length(emoji) == 1
end
def make_emoji_reaction_data(user, object, emoji, activity_id) do
make_like_data(user, object, activity_id)
|> Map.put("type", "EmojiReaction")
|> Map.put("content", emoji)
end
def make_like_data(
%User{ap_id: ap_id} = actor,
%{data: %{"actor" => object_actor_id, "id" => id}} = object,