projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
activitypub: remove contain_timeline()
[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 d22da6f404ad972dcebc199861cb44a36a2b4504..236d1b4aca4f9c2b9447f68fe2af03867b1c96c1 100644
(file)
--- a/
lib/pleroma/web/activity_pub/utils.ex
+++ b/
lib/pleroma/web/activity_pub/utils.ex
@@
-52,7
+52,7
@@
defmodule Pleroma.Web.ActivityPub.Utils do
defp recipient_in_collection(ap_id, coll) when is_list(coll), do: ap_id in coll
defp recipient_in_collection(_, _), do: false
defp recipient_in_collection(ap_id, coll) when is_list(coll), do: ap_id in coll
defp recipient_in_collection(_, _), do: false
- def recipient_in_message(
ap_id
, params) do
+ def recipient_in_message(
%User{ap_id: ap_id} = recipient, %User{} = actor
, params) do
cond do
recipient_in_collection(ap_id, params["to"]) ->
true
cond do
recipient_in_collection(ap_id, params["to"]) ->
true
@@
-71,6
+71,11
@@
defmodule Pleroma.Web.ActivityPub.Utils do
!params["to"] && !params["cc"] && !params["bto"] && !params["bcc"] ->
true
!params["to"] && !params["cc"] && !params["bto"] && !params["bcc"] ->
true
+ # if the message is sent from somebody the user is following, then assume it
+ # is addressed to the recipient
+ User.following?(recipient, actor) ->
+ true
+
true ->
false
end
true ->
false
end
@@
-99,7
+104,10
@@
defmodule Pleroma.Web.ActivityPub.Utils do
%{
"@context" => [
"https://www.w3.org/ns/activitystreams",
%{
"@context" => [
"https://www.w3.org/ns/activitystreams",
- "#{Web.base_url()}/schemas/litepub-0.1.jsonld"
+ "#{Web.base_url()}/schemas/litepub-0.1.jsonld",
+ %{
+ "@language" => "und"
+ }
]
}
end
]
}
end
@@
-226,14
+234,18
@@
defmodule Pleroma.Web.ActivityPub.Utils do
@doc """
Inserts a full object if it is contained in an activity.
"""
@doc """
Inserts a full object if it is contained in an activity.
"""
- def insert_full_object(%{"object" => %{"type" => type} = object_data})
+ def insert_full_object(%{"object" => %{"type" => type} = object_data}
= map
)
when is_map(object_data) and type in @supported_object_types do
with {:ok, object} <- Object.create(object_data) do
when is_map(object_data) and type in @supported_object_types do
with {:ok, object} <- Object.create(object_data) do
- {:ok, object}
+ map =
+ map
+ |> Map.put("object", object.data["id"])
+
+ {:ok, map, object}
end
end
end
end
- def insert_full_object(
_), do: {:ok
, nil}
+ def insert_full_object(
map), do: {:ok, map
, nil}
def update_object_in_activities(%{data: %{"id" => id}} = object) do
# TODO
def update_object_in_activities(%{data: %{"id" => id}} = object) do
# TODO
@@
-373,7
+385,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 ->
@@
-423,13
+435,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
)
@@
-586,13
+600,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,
activity.data,
- ^
%{object: blocked_id}
+ ^
blocked_id
),
),
- order_by: [
desc: :id
],
+ order_by: [
fragment("? desc nulls last", activity.id)
],
limit: 1
)
limit: 1
)
@@
-666,7
+682,7
@@
defmodule Pleroma.Web.ActivityPub.Utils do
"""
def fetch_ordered_collection(from, pages_left, acc \\ []) do
with {:ok, response} <- Tesla.get(from),
"""
def fetch_ordered_collection(from, pages_left, acc \\ []) do
with {:ok, response} <- Tesla.get(from),
- {:ok, collection} <-
Poi
son.decode(response.body) do
+ {:ok, collection} <-
Ja
son.decode(response.body) do
case collection["type"] do
"OrderedCollection" ->
# If we've encountered the OrderedCollection and not the page,
case collection["type"] do
"OrderedCollection" ->
# If we've encountered the OrderedCollection and not the page,