From b438ea24ee936ae10efdcd3c9079e3b45ae521f4 Mon Sep 17 00:00:00 2001
From: Roger Braun <roger@rogerbraun.net>
Date: Tue, 25 Apr 2017 17:45:34 +0200
Subject: [PATCH] Add ostatus conversation as context.

---
 lib/pleroma/web/ostatus/ostatus.ex         | 7 ++++++-
 lib/pleroma/web/twitter_api/twitter_api.ex | 2 +-
 test/web/ostatus/ostatus_test.exs          | 1 +
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex
index 4fd649c92..8c31ce5aa 100644
--- a/lib/pleroma/web/ostatus/ostatus.ex
+++ b/lib/pleroma/web/ostatus/ostatus.ex
@@ -41,7 +41,12 @@ defmodule Pleroma.Web.OStatus do
     [author] = :xmerl_xpath.string('/entry/author[1]', doc)
     {:ok, actor} = find_or_make_user(author)
 
-    context = ActivityPub.generate_context_id
+    context = string_from_xpath("/entry/ostatus:conversation[1]", doc) |> String.trim
+    context = if String.length(context) > 0 do
+      context
+    else
+      ActivityPub.generate_context_id
+    end
 
     to = [
       "https://www.w3.org/ns/activitystreams#Public"
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index cb48c7f5f..e4e26df15 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -253,7 +253,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
       {:error, changeset} ->
         errors = Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end)
       |> Poison.encode!
-        {:error, %{error: errors}}
+      {:error, %{error: errors}}
     end
   end
 
diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs
index 8ee605494..61dca5446 100644
--- a/test/web/ostatus/ostatus_test.exs
+++ b/test/web/ostatus/ostatus_test.exs
@@ -9,6 +9,7 @@ defmodule Pleroma.Web.OStatusTest do
     assert activity.data["type"] == "Create"
     assert activity.data["object"]["type"] == "Note"
     assert activity.data["published"] == "2017-04-23T14:51:03+00:00"
+    assert activity.data["context"] == "tag:gs.example.org:4040,2017-04-23:objectType=thread:nonce=f09e22f58abd5c7b"
   end
 
   describe "new remote user creation" do