summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2019-03-25 03:32:19 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-03-25 07:38:09 +0000
commit26b0c802c3eece72928d0425826af9fe728a5173 (patch)
treed2064b00b7258f309fd30c4dd07be2a8d3991c1f
parent750de7d84272c050ce7158f9c51dfe6d9823e81c (diff)
downloadpleroma-26b0c802c3eece72928d0425826af9fe728a5173.tar.gz
pleroma-26b0c802c3eece72928d0425826af9fe728a5173.zip
fix up missing announcements with preloads
-rw-r--r--lib/pleroma/activity.ex16
-rw-r--r--test/web/activity_pub/activity_pub_test.exs14
2 files changed, 24 insertions, 6 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index 26190df2f..3dfabe9f3 100644
--- 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
index c8c3b6d5f..96ad64e62 100644
--- 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})