aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2022-07-09 18:00:42 -0400
committerTusooa Zhu <tusooa@kazv.moe>2022-07-09 18:00:42 -0400
commit04ded94a50fbabb194ab9e9c5cf8f08937f85d64 (patch)
tree5f62b2be3e311670de1641e3f8c2a8a11b3ff865
parent11a6e8842079d8f29417e0de31fda85c7b7cb1be (diff)
downloadpleroma-04ded94a50fbabb194ab9e9c5cf8f08937f85d64.tar.gz
Fix remote emoji in subject disappearing after edits
-rw-r--r--lib/pleroma/web/common_api.ex9
-rw-r--r--test/pleroma/web/common_api_test.exs42
2 files changed, 50 insertions, 1 deletions
diff --git a/lib/pleroma/web/common_api.ex b/lib/pleroma/web/common_api.ex
index e5a78c102..89f5dd606 100644
--- a/lib/pleroma/web/common_api.ex
+++ b/lib/pleroma/web/common_api.ex
@@ -415,7 +415,14 @@ defmodule Pleroma.Web.CommonAPI do
defp make_update_data(user, orig_object, changes) do
kept_params = %{
- visibility: Visibility.get_visibility(orig_object)
+ visibility: Visibility.get_visibility(orig_object),
+ in_reply_to_id:
+ with replied_id when is_binary(replied_id) <- orig_object.data["inReplyTo"],
+ %Activity{id: activity_id} <- Activity.get_create_by_object_ap_id(replied_id) do
+ activity_id
+ else
+ _ -> nil
+ end
}
params = Map.merge(changes, kept_params)
diff --git a/test/pleroma/web/common_api_test.exs b/test/pleroma/web/common_api_test.exs
index 24f3a1a93..fcfcb9a2e 100644
--- a/test/pleroma/web/common_api_test.exs
+++ b/test/pleroma/web/common_api_test.exs
@@ -1605,5 +1605,47 @@ defmodule Pleroma.Web.CommonAPITest do
assert called(Pleroma.Web.Federator.publish(updated))
end
end
+
+ test "editing a post that copied a remote title with remote emoji should keep that emoji" do
+ remote_emoji_uri = "https://remote.org/emoji.png"
+
+ note =
+ insert(
+ :note,
+ data: %{
+ "summary" => ":remoteemoji:",
+ "emoji" => %{
+ "remoteemoji" => remote_emoji_uri
+ },
+ "tag" => [
+ %{
+ "type" => "Emoji",
+ "name" => "remoteemoji",
+ "icon" => %{"url" => remote_emoji_uri}
+ }
+ ]
+ }
+ )
+
+ note_activity = insert(:note_activity, note: note)
+
+ user = insert(:user)
+
+ {:ok, reply} =
+ CommonAPI.post(user, %{
+ status: "reply",
+ spoiler_text: ":remoteemoji:",
+ in_reply_to_id: note_activity.id
+ })
+
+ assert reply.object.data["emoji"]["remoteemoji"] == remote_emoji_uri
+
+ {:ok, edit} =
+ CommonAPI.update(user, reply, %{status: "reply mew mew", spoiler_text: ":remoteemoji:"})
+
+ edited_note = Pleroma.Object.normalize(edit)
+
+ assert edited_note.data["emoji"]["remoteemoji"] == remote_emoji_uri
+ end
end
end