X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpleroma%2Fobject.ex;h=786d6296cfcc24a3964e943003b245ace3b77667;hb=fc92a0fd8d5be0352f4791b79bda04960f36f707;hp=8a670645d424aa3b9ef0688935b2101ec92527e8;hpb=9e3899bf36cea47560c5de1d4787125f6296a3b8;p=akkoma diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 8a670645d..786d6296c 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -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