Document subscription endpoints, fix typos
[akkoma] / lib / pleroma / web / activity_pub / utils.ex
index feb73518eba118b444ed710417f4e5e0b4fe906f..32545937ee84a91a49abd1e1a32914c0a1b737d3 100644 (file)
@@ -209,8 +209,9 @@ defmodule Pleroma.Web.ActivityPub.Utils do
   def lazy_put_object_defaults(map, activity, true = _fake) do
     map
     |> Map.put_new_lazy("published", &make_date/0)
-    |> Map.put_new("id", "pleroma:fakeid")
+    |> Map.put_new("id", "pleroma:fake_object_id")
     |> Map.put_new("context", activity["context"])
+    |> Map.put_new("fake", true)
     |> Map.put_new("context_id", activity["context_id"])
   end
 
@@ -372,7 +373,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do
         [state, actor, object]
       )
 
-      activity = Repo.get(Activity, activity.id)
+      activity = Activity.get_by_id(activity.id)
       {:ok, activity}
     rescue
       e ->
@@ -422,13 +423,15 @@ defmodule Pleroma.Web.ActivityPub.Utils do
             activity.data
           ),
         where: activity.actor == ^follower_id,
+        # this is to use the index
         where:
           fragment(
-            "? @> ?",
+            "coalesce((?)->'object'->>'id', (?)->>'object') = ?",
+            activity.data,
             activity.data,
-            ^%{object: followed_id}
+            ^followed_id
           ),
-        order_by: [desc: :id],
+        order_by: [fragment("? desc nulls last", activity.id)],
         limit: 1
       )
 
@@ -585,13 +588,15 @@ defmodule Pleroma.Web.ActivityPub.Utils do
             activity.data
           ),
         where: activity.actor == ^blocker_id,
+        # this is to use the index
         where:
           fragment(
-            "? @> ?",
+            "coalesce((?)->'object'->>'id', (?)->>'object') = ?",
+            activity.data,
             activity.data,
-            ^%{object: blocked_id}
+            ^blocked_id
           ),
-        order_by: [desc: :id],
+        order_by: [fragment("? desc nulls last", activity.id)],
         limit: 1
       )