Skip to content
Snippets Groups Projects
Commit 4cbf17da authored by lain's avatar lain
Browse files

Save cws in the activitypub data.

parent 4dcbb64f
No related branches found
No related tags found
No related merge requests found
......@@ -94,11 +94,12 @@ defmodule Pleroma.Web.CommonAPI.Utils 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,
......
......@@ -94,6 +94,7 @@ defmodule Pleroma.Web.OStatus.NoteHandler 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 @@ defmodule Pleroma.Web.OStatus.NoteHandler 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)),
......
......@@ -150,16 +150,20 @@ defmodule Pleroma.Web.OStatus 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
"<span class='mastodon-cw'>#{cw}</span><br>#{base_content}"
else _e -> base_content
cw
else _e -> nil
end
end
......
......@@ -85,7 +85,7 @@ defmodule Pleroma.Web.OStatusTest 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 @@ defmodule Pleroma.Web.OStatusTest 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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment