@@ -123,6 +123,16 @@ defmodule Pleroma.Web.CommonAPI do | |||||
end | end | ||||
end | end | ||||
def react_with_emoji(id, user, emoji) do | |||||
with %Activity{} = activity <- Activity.get_by_id(id), | |||||
object <- Object.normalize(activity) do | |||||
ActivityPub.react_with_emoji(user, object, emoji) | |||||
else | |||||
_ -> | |||||
{:error, dgettext("errors", "Could not add reaction emoji")} | |||||
end | |||||
end | |||||
def vote(user, object, choices) do | def vote(user, object, choices) do | ||||
with "Question" <- object.data["type"], | with "Question" <- object.data["type"], | ||||
{:author, false} <- {:author, object.data["actor"] == user.ap_id}, | {:author, false} <- {:author, object.data["actor"] == user.ap_id}, | ||||
@@ -222,6 +222,20 @@ defmodule Pleroma.Web.CommonAPITest do | |||||
end | end | ||||
describe "reactions" do | describe "reactions" do | ||||
test "reacting to a status with an emoji" do | |||||
user = insert(:user) | |||||
other_user = insert(:user) | |||||
{:ok, activity} = CommonAPI.post(other_user, %{"status" => "cofe"}) | |||||
{:ok, reaction, _} = CommonAPI.react_with_emoji(activity.id, user, "👍") | |||||
assert reaction.data["actor"] == user.ap_id | |||||
assert reaction.data["content"] == "👍" | |||||
# TODO: test error case. | |||||
end | |||||
test "repeating a status" do | test "repeating a status" do | ||||
user = insert(:user) | user = insert(:user) | ||||
other_user = insert(:user) | other_user = insert(:user) | ||||