forked from AkkomaGang/akkoma
Merge branch 'misskey-compat' into 'reactions'
Transmogrifier: Handle misskey likes with reactions like EmojiReactions. See merge request pleroma/pleroma!1783
This commit is contained in:
commit
91e90aa807
3 changed files with 79 additions and 0 deletions
|
@ -560,6 +560,34 @@ def handle_incoming(
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@misskey_reactions %{
|
||||||
|
"like" => "👍",
|
||||||
|
"love" => "❤️",
|
||||||
|
"laugh" => "😆",
|
||||||
|
"hmm" => "🤔",
|
||||||
|
"surprise" => "😮",
|
||||||
|
"congrats" => "🎉",
|
||||||
|
"angry" => "💢",
|
||||||
|
"confused" => "😥",
|
||||||
|
"rip" => "😇",
|
||||||
|
"pudding" => "🍮",
|
||||||
|
"star" => "⭐"
|
||||||
|
}
|
||||||
|
|
||||||
|
@doc "Rewrite misskey likes into EmojiReactions"
|
||||||
|
def handle_incoming(
|
||||||
|
%{
|
||||||
|
"type" => "Like",
|
||||||
|
"_misskey_reaction" => reaction
|
||||||
|
} = data,
|
||||||
|
options
|
||||||
|
) do
|
||||||
|
data
|
||||||
|
|> Map.put("type", "EmojiReaction")
|
||||||
|
|> Map.put("content", @misskey_reactions[reaction] || reaction)
|
||||||
|
|> handle_incoming(options)
|
||||||
|
end
|
||||||
|
|
||||||
def handle_incoming(
|
def handle_incoming(
|
||||||
%{"type" => "Like", "object" => object_id, "actor" => _actor, "id" => id} = data,
|
%{"type" => "Like", "object" => object_id, "actor" => _actor, "id" => id} = data,
|
||||||
_options
|
_options
|
||||||
|
|
14
test/fixtures/misskey-like.json
vendored
Normal file
14
test/fixtures/misskey-like.json
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"@context" : [
|
||||||
|
"https://www.w3.org/ns/activitystreams",
|
||||||
|
"https://w3id.org/security/v1",
|
||||||
|
{"Hashtag" : "as:Hashtag"}
|
||||||
|
],
|
||||||
|
"_misskey_reaction" : "pudding",
|
||||||
|
"actor": "http://mastodon.example.org/users/admin",
|
||||||
|
"cc" : ["https://testing.pleroma.lol/users/lain"],
|
||||||
|
"id" : "https://misskey.xyz/75149198-2f45-46e4-930a-8b0538297075",
|
||||||
|
"nickname" : "lain",
|
||||||
|
"object" : "https://testing.pleroma.lol/objects/c331bbf7-2eb9-4801-a709-2a6103492a5a",
|
||||||
|
"type" : "Like"
|
||||||
|
}
|
|
@ -341,6 +341,43 @@ test "it works for incoming likes" do
|
||||||
assert data["object"] == activity.data["object"]
|
assert data["object"] == activity.data["object"]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it works for incoming misskey likes, turning them into EmojiReactions" do
|
||||||
|
user = insert(:user)
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "hello"})
|
||||||
|
|
||||||
|
data =
|
||||||
|
File.read!("test/fixtures/misskey-like.json")
|
||||||
|
|> Poison.decode!()
|
||||||
|
|> Map.put("object", activity.data["object"])
|
||||||
|
|
||||||
|
{:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
|
||||||
|
|
||||||
|
assert data["actor"] == data["actor"]
|
||||||
|
assert data["type"] == "EmojiReaction"
|
||||||
|
assert data["id"] == data["id"]
|
||||||
|
assert data["object"] == activity.data["object"]
|
||||||
|
assert data["content"] == "🍮"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it works for incoming misskey likes that contain unicode emojis, turning them into EmojiReactions" do
|
||||||
|
user = insert(:user)
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "hello"})
|
||||||
|
|
||||||
|
data =
|
||||||
|
File.read!("test/fixtures/misskey-like.json")
|
||||||
|
|> Poison.decode!()
|
||||||
|
|> Map.put("object", activity.data["object"])
|
||||||
|
|> Map.put("_misskey_reaction", "⭐")
|
||||||
|
|
||||||
|
{:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
|
||||||
|
|
||||||
|
assert data["actor"] == data["actor"]
|
||||||
|
assert data["type"] == "EmojiReaction"
|
||||||
|
assert data["id"] == data["id"]
|
||||||
|
assert data["object"] == activity.data["object"]
|
||||||
|
assert data["content"] == "⭐"
|
||||||
|
end
|
||||||
|
|
||||||
test "it works for incoming emoji reactions" do
|
test "it works for incoming emoji reactions" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
{:ok, activity} = CommonAPI.post(user, %{"status" => "hello"})
|
{:ok, activity} = CommonAPI.post(user, %{"status" => "hello"})
|
||||||
|
|
Loading…
Reference in a new issue