forked from AkkomaGang/akkoma
fix up missing announcements with preloads
This commit is contained in:
parent
750de7d842
commit
26b0c802c3
2 changed files with 24 additions and 6 deletions
|
@ -41,8 +41,8 @@ defmodule Pleroma.Activity do
|
||||||
#
|
#
|
||||||
# ```
|
# ```
|
||||||
# |> join(:inner, [activity], o in Object,
|
# |> join(:inner, [activity], o in Object,
|
||||||
# on: fragment("(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
|
# on: fragment("(?->>'id') = COALESCE((?)->'object'->> 'id', (?)->>'object')",
|
||||||
# o.data, activity.data))
|
# o.data, activity.data, activity.data))
|
||||||
# |> preload([activity, object], [object: object])
|
# |> preload([activity, object], [object: object])
|
||||||
# ```
|
# ```
|
||||||
#
|
#
|
||||||
|
@ -61,8 +61,9 @@ def with_preloaded_object(query) do
|
||||||
o in Object,
|
o in Object,
|
||||||
on:
|
on:
|
||||||
fragment(
|
fragment(
|
||||||
"(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
|
"(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
|
||||||
o.data,
|
o.data,
|
||||||
|
activity.data,
|
||||||
activity.data
|
activity.data
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -86,8 +87,9 @@ def get_by_ap_id_with_object(ap_id) do
|
||||||
left_join: o in Object,
|
left_join: o in Object,
|
||||||
on:
|
on:
|
||||||
fragment(
|
fragment(
|
||||||
"(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
|
"(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
|
||||||
o.data,
|
o.data,
|
||||||
|
activity.data,
|
||||||
activity.data
|
activity.data
|
||||||
),
|
),
|
||||||
preload: [object: o]
|
preload: [object: o]
|
||||||
|
@ -105,8 +107,9 @@ def get_by_id_with_object(id) do
|
||||||
inner_join: o in Object,
|
inner_join: o in Object,
|
||||||
on:
|
on:
|
||||||
fragment(
|
fragment(
|
||||||
"(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
|
"(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
|
||||||
o.data,
|
o.data,
|
||||||
|
activity.data,
|
||||||
activity.data
|
activity.data
|
||||||
),
|
),
|
||||||
preload: [object: o]
|
preload: [object: o]
|
||||||
|
@ -182,8 +185,9 @@ def create_by_object_ap_id_with_object(ap_id) when is_binary(ap_id) do
|
||||||
inner_join: o in Object,
|
inner_join: o in Object,
|
||||||
on:
|
on:
|
||||||
fragment(
|
fragment(
|
||||||
"(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
|
"(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
|
||||||
o.data,
|
o.data,
|
||||||
|
activity.data,
|
||||||
activity.data
|
activity.data
|
||||||
),
|
),
|
||||||
preload: [object: o]
|
preload: [object: o]
|
||||||
|
|
|
@ -365,6 +365,20 @@ test "doesn't return muted activities" do
|
||||||
assert Enum.member?(activities, activity_one)
|
assert Enum.member?(activities, activity_one)
|
||||||
end
|
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
|
test "excludes reblogs on request" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
{:ok, expected_activity} = ActivityBuilder.insert(%{"type" => "Create"}, %{:user => user})
|
{:ok, expected_activity} = ActivityBuilder.insert(%{"type" => "Create"}, %{:user => user})
|
||||||
|
|
Loading…
Reference in a new issue