Added limits and media attachments for scheduled activities.
[akkoma] / lib / pleroma / object.ex
index 8a670645d424aa3b9ef0688935b2101ec92527e8..786d6296cfcc24a3964e943003b245ace3b77667 100644 (file)
@@ -44,6 +44,11 @@ defmodule Pleroma.Object do
   # Use this whenever possible, especially when walking graphs in an O(N) loop!
   def normalize(%Activity{object: %Object{} = object}), do: object
 
+  # A hack for fake activities
+  def normalize(%Activity{data: %{"object" => %{"fake" => true} = data}}) do
+    %Object{id: "pleroma:fake_object_id", data: data}
+  end
+
   # Catch and log Object.normalize() calls where the Activity's child object is not
   # preloaded.
   def normalize(%Activity{data: %{"object" => %{"id" => ap_id}}}) do
@@ -179,4 +184,12 @@ defmodule Pleroma.Object do
       _ -> {:error, "Not found"}
     end
   end
+
+  def enforce_user_objects(user, object_ids) do
+    Object
+    |> where([o], fragment("?->>'actor' = ?", o.data, ^user.ap_id))
+    |> where([o], o.id in ^object_ids)
+    |> select([o], o.id)
+    |> Repo.all()
+  end
 end