diff --git a/lib/pleroma/web/ostatus/handlers/note_handler.ex b/lib/pleroma/web/ostatus/handlers/note_handler.ex index f9aa463a0..54c9e85d5 100644 --- a/lib/pleroma/web/ostatus/handlers/note_handler.ex +++ b/lib/pleroma/web/ostatus/handlers/note_handler.ex @@ -24,7 +24,10 @@ defmodule Pleroma.Web.OStatus.NoteHandler do 3. A newly generated context id. """ def get_context(entry, inReplyTo) do - context = (XML.string_from_xpath("//ostatus:conversation[1]", entry) || "") |> String.trim + context = ( + XML.string_from_xpath("//ostatus:conversation[1]", entry) + || XML.string_from_xpath("//ostatus:conversation[1]/@ref", entry) + || "") |> String.trim with %{data: %{"context" => context}} <- Object.get_cached_by_ap_id(inReplyTo) do context diff --git a/test/fixtures/mastodon_conversation.xml b/test/fixtures/mastodon_conversation.xml new file mode 100644 index 000000000..8faab2304 --- /dev/null +++ b/test/fixtures/mastodon_conversation.xml @@ -0,0 +1,30 @@ + + + tag:mastodon.social,2017-08-28:objectId=16402826:objectType=Status + 2017-08-28T17:58:55Z + 2017-08-28T17:58:55Z + New status by lambadalambda + + https://mastodon.social/users/lambadalambda + http://activitystrea.ms/schema/1.0/person + https://mastodon.social/users/lambadalambda + lambadalambda + lambadalambda@mastodon.social + + + + lambadalambda + Critical Value + public + + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>test. <a href="https://mastodon.social/media/XCp0OHGPON9kWZwhjaI" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/media/XCp0OHGP</span><span class="invisible">ON9kWZwhjaI</span></a></p> + + + public + + + + diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs index 8dd3c3b54..ee2b79ffa 100644 --- a/test/web/ostatus/ostatus_test.exs +++ b/test/web/ostatus/ostatus_test.exs @@ -182,6 +182,13 @@ defmodule Pleroma.Web.OStatusTest do refute favorited_activity.local end + test "handle conversation references" do + incoming = File.read!("test/fixtures/mastodon_conversation.xml") + {:ok, [activity]} = OStatus.handle_incoming(incoming) + + assert activity.data["context"] == "tag:mastodon.social,2017-08-28:objectId=7876885:objectType=Conversation" + end + test "handle incoming favorites with locally available object - GS, websub" do note_activity = insert(:note_activity)