aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2022-06-25 09:23:09 -0400
committerTusooa Zhu <tusooa@kazv.moe>2022-06-25 09:23:09 -0400
commit9c6dae942d2ec5e2314af1d345cf2aeed504aae8 (patch)
treeedb27ad9c2396f810718810d4a54f6be477ed395
parente98579b1da78b47d6848ec55042640e539e44f6c (diff)
downloadpleroma-9c6dae942d2ec5e2314af1d345cf2aeed504aae8.tar.gz
Fix local updates causing emojis to be lost
-rw-r--r--lib/pleroma/web/activity_pub/side_effects.ex9
-rw-r--r--test/pleroma/web/common_api_test.exs15
2 files changed, 23 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex
index 7345a6904..747f467db 100644
--- a/lib/pleroma/web/activity_pub/side_effects.ex
+++ b/lib/pleroma/web/activity_pub/side_effects.ex
@@ -420,7 +420,14 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
orig_object = Object.get_by_ap_id(orig_object_ap_id)
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
%{
diff --git a/test/pleroma/web/common_api_test.exs b/test/pleroma/web/common_api_test.exs
index 2f1197c37..32d6562d7 100644
--- a/test/pleroma/web/common_api_test.exs
+++ b/test/pleroma/web/common_api_test.exs
@@ -1569,5 +1569,20 @@ defmodule Pleroma.Web.CommonAPITest do
assert Visibility.get_visibility(updated_object) == "private"
assert Visibility.get_visibility(updated) == "private"
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