diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex
index 06fcc9e8b..83a656011 100644
--- a/lib/pleroma/web/common_api/utils.ex
+++ b/lib/pleroma/web/common_api/utils.ex
@@ -94,11 +94,12 @@ def add_user_links(text, mentions) do
end)
end
- def make_note_data(actor, to, context, content_html, attachments, inReplyTo, tags) do
+ def make_note_data(actor, to, context, content_html, attachments, inReplyTo, tags, cw \\ nil) do
object = %{
"type" => "Note",
"to" => to,
"content" => content_html,
+ "summary" => cw,
"context" => context,
"attachment" => attachments,
"actor" => actor,
diff --git a/lib/pleroma/web/ostatus/handlers/note_handler.ex b/lib/pleroma/web/ostatus/handlers/note_handler.ex
index b151c118a..8747dbb67 100644
--- a/lib/pleroma/web/ostatus/handlers/note_handler.ex
+++ b/lib/pleroma/web/ostatus/handlers/note_handler.ex
@@ -94,6 +94,7 @@ def handle_note(entry, doc \\ nil) do
[author] <- :xmerl_xpath.string('//author[1]', doc),
{:ok, actor} <- OStatus.find_make_or_update_user(author),
content_html <- OStatus.get_content(entry),
+ cw <- OStatus.get_cw(entry),
inReplyTo <- XML.string_from_xpath("//thr:in-reply-to[1]/@ref", entry),
inReplyToActivity <- fetch_replied_to_activity(entry, inReplyTo),
inReplyTo <- (inReplyToActivity && inReplyToActivity.data["object"]["id"]) || inReplyTo,
@@ -103,7 +104,7 @@ def handle_note(entry, doc \\ nil) do
mentions <- get_mentions(entry),
to <- make_to_list(actor, mentions),
date <- XML.string_from_xpath("//published", entry),
- note <- CommonAPI.Utils.make_note_data(actor.ap_id, to, context, content_html, attachments, inReplyToActivity, []),
+ note <- CommonAPI.Utils.make_note_data(actor.ap_id, to, context, content_html, attachments, inReplyToActivity, [], cw),
note <- note |> Map.put("id", id) |> Map.put("tag", tags),
note <- note |> Map.put("published", date),
note <- note |> Map.put("emoji", get_emoji(entry)),
diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex
index bc975f82d..1e8b71357 100644
--- a/lib/pleroma/web/ostatus/ostatus.ex
+++ b/lib/pleroma/web/ostatus/ostatus.ex
@@ -150,16 +150,20 @@ def get_attachments(entry) do
end
@doc """
- Gets the content from a an entry. Will add the cw text to the body for cw'd
- Mastodon notes.
+ Gets the content from a an entry.
"""
def get_content(entry) do
- base_content = string_from_xpath("//content", entry)
+ string_from_xpath("//content", entry)
+ end
+ @doc """
+ Get the cw that mastodon uses.
+ """
+ def get_cw(entry) do
with scope when not is_nil(scope) <- string_from_xpath("//mastodon:scope", entry),
cw when not is_nil(cw) <- string_from_xpath("/*/summary", entry) do
- "#{cw}
#{base_content}"
- else _e -> base_content
+ cw
+ else _e -> nil
end
end
diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs
index 95038b73c..de01612b3 100644
--- a/test/web/ostatus/ostatus_test.exs
+++ b/test/web/ostatus/ostatus_test.exs
@@ -85,7 +85,7 @@ test "handle incoming notes - Mastodon, with CW" do
assert activity.data["type"] == "Create"
assert activity.data["object"]["type"] == "Note"
assert activity.data["object"]["actor"] == "https://mastodon.social/users/lambadalambda"
- assert String.contains?(activity.data["object"]["content"], "technologic")
+ assert activity.data["object"]["summary"] == "technologic"
assert "https://www.w3.org/ns/activitystreams#Public" in activity.data["to"]
end
@@ -93,7 +93,7 @@ test "handle incoming retweets - Mastodon, with CW" do
incoming = File.read!("test/fixtures/cw_retweet.xml")
{:ok, [[activity, retweeted_activity]]} = OStatus.handle_incoming(incoming)
- assert String.contains?(retweeted_activity.data["object"]["content"], "Hey.")
+ assert retweeted_activity.data["object"]["summary"] == "Hey."
end
test "handle incoming notes - GS, subscription, reply" do