projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'origin/develop' into fix-slow-relationships
[akkoma]
/
lib
/
pleroma
/
web
/
activity_pub
/
utils.ex
diff --git
a/lib/pleroma/web/activity_pub/utils.ex
b/lib/pleroma/web/activity_pub/utils.ex
index 182f9cacbdbc8769bed2cacd36a3d6e605541c28..0c614a8830f6d6b6db2733e17dc8f353b1939b31 100644
(file)
--- a/
lib/pleroma/web/activity_pub/utils.ex
+++ b/
lib/pleroma/web/activity_pub/utils.ex
@@
-209,12
+209,12
@@
defmodule Pleroma.Web.ActivityPub.Utils do
"""
def insert_full_object(%{"object" => %{"type" => type} = object_data})
when is_map(object_data) and type in @supported_object_types do
"""
def insert_full_object(%{"object" => %{"type" => type} = object_data})
when is_map(object_data) and type in @supported_object_types do
- with {:ok,
_
} <- Object.create(object_data) do
- :ok
+ with {:ok,
object
} <- Object.create(object_data) do
+ {:ok, object}
end
end
end
end
- def insert_full_object(_), do:
:ok
+ def insert_full_object(_), do:
{:ok, nil}
def update_object_in_activities(%{data: %{"id" => id}} = object) do
# TODO
def update_object_in_activities(%{data: %{"id" => id}} = object) do
# TODO
@@
-354,7
+354,7
@@
defmodule Pleroma.Web.ActivityPub.Utils do
[state, actor, object]
)
[state, actor, object]
)
- activity =
Repo.get(Activity,
activity.id)
+ activity =
Activity.get_by_id(
activity.id)
{:ok, activity}
rescue
e ->
{:ok, activity}
rescue
e ->
@@
-404,13
+404,15
@@
defmodule Pleroma.Web.ActivityPub.Utils do
activity.data
),
where: activity.actor == ^follower_id,
activity.data
),
where: activity.actor == ^follower_id,
+ # this is to use the index
where:
fragment(
where:
fragment(
- "? @> ?",
+ "coalesce((?)->'object'->>'id', (?)->>'object') = ?",
+ activity.data,
activity.data,
activity.data,
- ^
%{object: followed_id}
+ ^
followed_id
),
),
- order_by: [
desc: :id
],
+ order_by: [
fragment("? desc nulls last", activity.id)
],
limit: 1
)
limit: 1
)
@@
-567,13
+569,15
@@
defmodule Pleroma.Web.ActivityPub.Utils do
activity.data
),
where: activity.actor == ^blocker_id,
activity.data
),
where: activity.actor == ^blocker_id,
+ # this is to use the index
where:
fragment(
where:
fragment(
- "
? @>
?",
+ "
coalesce((?)->'object'->>'id', (?)->>'object') =
?",
activity.data,
activity.data,
- ^%{object: blocked_id}
+ activity.data,
+ ^blocked_id
),
),
- order_by: [
desc: :id
],
+ order_by: [
fragment("? desc nulls last", activity.id)
],
limit: 1
)
limit: 1
)
@@
-621,7
+625,13
@@
defmodule Pleroma.Web.ActivityPub.Utils do
#### Flag-related helpers
def make_flag_data(params, additional) do
#### Flag-related helpers
def make_flag_data(params, additional) do
- status_ap_ids = Enum.map(params.statuses || [], & &1.data["id"])
+ status_ap_ids =
+ Enum.map(params.statuses || [], fn
+ %Activity{} = act -> act.data["id"]
+ act when is_map(act) -> act["id"]
+ act when is_binary(act) -> act
+ end)
+
object = [params.account.ap_id] ++ status_ap_ids
%{
object = [params.account.ap_id] ++ status_ap_ids
%{