commit: b028b0f97d4b6310b1402b3b876aa8f8b286bc4d
parent: bc14c98de115d8695d3436d1f093f4c161ceb3b2
Author: rinpatch <rinpatch@sdf.org>
Date: Mon, 25 Mar 2019 09:24:08 +0000
Merge branch 'bugfix/missing-announces' into 'develop'
fix up missing announcements with preloads
See merge request pleroma/pleroma!972
Diffstat:
2 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
@@ -41,8 +41,8 @@ defmodule Pleroma.Activity do
#
# ```
# |> join(:inner, [activity], o in Object,
- # on: fragment("(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
- # o.data, activity.data))
+ # on: fragment("(?->>'id') = COALESCE((?)->'object'->> 'id', (?)->>'object')",
+ # o.data, activity.data, activity.data))
# |> preload([activity, object], [object: object])
# ```
#
@@ -61,8 +61,9 @@ defmodule Pleroma.Activity do
o in Object,
on:
fragment(
- "(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
+ "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
o.data,
+ activity.data,
activity.data
)
)
@@ -86,8 +87,9 @@ defmodule Pleroma.Activity do
left_join: o in Object,
on:
fragment(
- "(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
+ "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
o.data,
+ activity.data,
activity.data
),
preload: [object: o]
@@ -105,8 +107,9 @@ defmodule Pleroma.Activity do
inner_join: o in Object,
on:
fragment(
- "(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
+ "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
o.data,
+ activity.data,
activity.data
),
preload: [object: o]
@@ -182,8 +185,9 @@ defmodule Pleroma.Activity do
inner_join: o in Object,
on:
fragment(
- "(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
+ "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
o.data,
+ activity.data,
activity.data
),
preload: [object: o]
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs
@@ -365,6 +365,20 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
assert Enum.member?(activities, activity_one)
end
+ test "does include announces on request" do
+ activity_three = insert(:note_activity)
+ user = insert(:user)
+ booster = insert(:user)
+
+ {:ok, user} = User.follow(user, booster)
+
+ {:ok, announce, _object} = CommonAPI.repeat(activity_three.id, booster)
+
+ [announce_activity] = ActivityPub.fetch_activities([user.ap_id | user.following])
+
+ assert announce_activity.id == announce.id
+ end
+
test "excludes reblogs on request" do
user = insert(:user)
{:ok, expected_activity} = ActivityBuilder.insert(%{"type" => "Create"}, %{:user => user})