logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 131f88320740bec9c74e4280a6b1a7d8641ee367
parent: 8caea9be729827095d14bcb87ab6b5d5c15f4935
Author: kaniini <nenolod@gmail.com>
Date:   Sat, 11 May 2019 16:52:26 +0000

Merge branch 'fix/ostatus-activity-representer-depends-on-emebeded-objects' into 'develop'

Fix get_in_reply_to in OStatus' activity representer depending on embedded objects

See merge request pleroma/pleroma!1129

Diffstat:

Mlib/pleroma/web/ostatus/activity_representer.ex21+++++++++++----------
Mtest/web/ostatus/activity_representer_test.exs30++++++++++++------------------
2 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/lib/pleroma/web/ostatus/activity_representer.ex b/lib/pleroma/web/ostatus/activity_representer.ex @@ -18,15 +18,18 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do end end - defp get_in_reply_to(%{"object" => %{"inReplyTo" => in_reply_to}}) do - [ - {:"thr:in-reply-to", - [ref: to_charlist(in_reply_to), href: to_charlist(get_href(in_reply_to))], []} - ] + defp get_in_reply_to(activity) do + with %Object{data: %{"inReplyTo" => in_reply_to}} <- Object.normalize(activity) do + [ + {:"thr:in-reply-to", + [ref: to_charlist(in_reply_to), href: to_charlist(get_href(in_reply_to))], []} + ] + else + _ -> + [] + end end - defp get_in_reply_to(_), do: [] - defp get_mentions(to) do Enum.map(to, fn id -> cond do @@ -98,7 +101,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do []} end) - in_reply_to = get_in_reply_to(activity.data) + in_reply_to = get_in_reply_to(activity) author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: [] mentions = activity.recipients |> get_mentions @@ -146,7 +149,6 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do updated_at = activity.data["published"] inserted_at = activity.data["published"] - _in_reply_to = get_in_reply_to(activity.data) author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: [] mentions = activity.recipients |> get_mentions @@ -177,7 +179,6 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do updated_at = activity.data["published"] inserted_at = activity.data["published"] - _in_reply_to = get_in_reply_to(activity.data) author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: [] retweeted_activity = Activity.get_create_by_object_ap_id(activity.data["object"]) diff --git a/test/web/ostatus/activity_representer_test.exs b/test/web/ostatus/activity_representer_test.exs @@ -67,37 +67,31 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do end test "a reply note" do - note = insert(:note_activity) - answer = insert(:note_activity) - object = answer.data["object"] - object = Map.put(object, "inReplyTo", note.data["object"]["id"]) - - data = %{answer.data | "object" => object} - answer = %{answer | data: data} - - note_object = Object.get_by_ap_id(note.data["object"]["id"]) + user = insert(:user) + note_object = insert(:note) + _note = insert(:note_activity, %{note: note_object}) + object = insert(:note, %{data: %{"inReplyTo" => note_object.data["id"]}}) + answer = insert(:note_activity, %{note: object}) Repo.update!( Object.change(note_object, %{data: Map.put(note_object.data, "external_url", "someurl")}) ) - user = User.get_cached_by_ap_id(answer.data["actor"]) - expected = """ <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> - <id>#{answer.data["object"]["id"]}</id> + <id>#{object.data["id"]}</id> <title>New note by #{user.nickname}</title> - <content type="html">#{answer.data["object"]["content"]}</content> - <published>#{answer.data["object"]["published"]}</published> - <updated>#{answer.data["object"]["published"]}</updated> + <content type="html">#{object.data["content"]}</content> + <published>#{object.data["published"]}</published> + <updated>#{object.data["published"]}</updated> <ostatus:conversation ref="#{answer.data["context"]}">#{answer.data["context"]}</ostatus:conversation> <link ref="#{answer.data["context"]}" rel="ostatus:conversation" /> <summary>2hu</summary> - <link type="application/atom+xml" href="#{answer.data["object"]["id"]}" rel="self" /> - <link type="text/html" href="#{answer.data["object"]["id"]}" rel="alternate" /> + <link type="application/atom+xml" href="#{object.data["id"]}" rel="self" /> + <link type="text/html" href="#{object.data["id"]}" rel="alternate" /> <category term="2hu"/> - <thr:in-reply-to ref="#{note.data["object"]["id"]}" href="someurl" /> + <thr:in-reply-to ref="#{note_object.data["id"]}" href="someurl" /> <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/> <link name="2hu" rel="emoji" href="corndog.png" /> """