Fix local updates causing emojis to be lost

This commit is contained in:
Tusooa Zhu 2022-06-25 09:23:09 -04:00
parent e98579b1da
commit 9c6dae942d
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
2 changed files with 23 additions and 1 deletions

View file

@ -420,7 +420,14 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
orig_object = Object.get_by_ap_id(orig_object_ap_id) orig_object = Object.get_by_ap_id(orig_object_ap_id)
orig_object_data = orig_object.data orig_object_data = orig_object.data
updated_object = meta[:object_data] updated_object =
if meta[:local] do
# If this is a local Update, we don't process it by transmogrifier,
# so we use the embedded object as-is.
updated_object
else
meta[:object_data]
end
if orig_object_data["type"] in @updatable_object_types do if orig_object_data["type"] in @updatable_object_types do
%{ %{

View file

@ -1569,5 +1569,20 @@ defmodule Pleroma.Web.CommonAPITest do
assert Visibility.get_visibility(updated_object) == "private" assert Visibility.get_visibility(updated_object) == "private"
assert Visibility.get_visibility(updated) == "private" assert Visibility.get_visibility(updated) == "private"
end end
test "updates a post with emoji" do
[{emoji1, _}, {emoji2, _} | _] = Pleroma.Emoji.get_all()
user = insert(:user)
{:ok, activity} =
CommonAPI.post(user, %{status: "foo1", spoiler_text: "title 1 :#{emoji1}:"})
{:ok, updated} = CommonAPI.update(user, activity, %{status: "updated 2 :#{emoji2}:"})
updated_object = Object.normalize(updated)
assert updated_object.data["content"] == "updated 2 :#{emoji2}:"
assert %{^emoji2 => _} = updated_object.data["emoji"]
end
end end
end end