ActivityPub: Basic EmojiReactions.
This commit is contained in:
parent
ba5e14be05
commit
6e1ec4c5da
3 changed files with 42 additions and 0 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue