X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Factivity_pub.ex;h=35536a1e41cb5530886a10fbb8a6ced31c873c97;hb=bd5bdc4c247e2ebb239215540a51b69c356da65c;hp=4f7be4293332cb09bc75e86e337fe8a1589e7d62;hpb=ed1eb5deea35ff2c3487ef550fad3a543a80cb32;p=akkoma diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 4f7be4293..35536a1e4 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do with nil <- Activity.get_by_ap_id(map["id"]), map <- lazy_put_activity_defaults(map), :ok <- insert_full_object(map) do - {:ok, activity} = Repo.insert(%Activity{data: map, local: local}) + {:ok, activity} = Repo.insert(%Activity{data: map, local: local, actor: map["actor"]}) Notification.create_notifications(activity) {:ok, activity} else @@ -22,6 +22,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do with create_data <- make_create_data(%{to: to, actor: actor, published: published, context: context, object: object}, additional), {:ok, activity} <- insert(create_data, local), :ok <- maybe_federate(activity) do + if activity.data["type"] == "Create" and Enum.member?(activity.data["to"], "https://www.w3.org/ns/activitystreams#Public") do + Pleroma.Web.Streamer.stream("public", activity) + end {:ok, activity} end end @@ -137,7 +140,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp restrict_actor(query, %{"actor_id" => actor_id}) do from activity in query, - where: fragment("?->>'actor' = ?", activity.data, ^actor_id) + where: activity.actor == ^actor_id end defp restrict_actor(query, _), do: query @@ -157,6 +160,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp restrict_favorited_by(query, _), do: query # Only search through last 100_000 activities by default + defp restrict_recent(query, %{"whole_db" => true}), do: query defp restrict_recent(query, _) do since = (Repo.aggregate(Activity, :max, :id) || 0) - 100_000 @@ -167,14 +171,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp restrict_blocked(query, %{"blocking_user" => %User{info: info}}) do blocks = info["blocks"] || [] from activity in query, - where: fragment("not (?->>'actor' = ANY(?))", activity.data, ^blocks) + where: fragment("not (? = ANY(?))", activity.actor, ^blocks) end defp restrict_blocked(query, _), do: query def fetch_activities(recipients, opts \\ %{}) do base_query = from activity in Activity, limit: 20, - order_by: [desc: :id] + order_by: [fragment("? desc nulls last", activity.id)] base_query |> restrict_recipients(recipients)