X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Factivity_pub.ex;h=02255e0a427c7fae327a92da12e3b31e2cee9981;hb=6cf7c132282e612514af992c6dea0b03ee5b678d;hp=125473b96a496fffb57dc89797251b193c4687c6;hpb=ef5033d7a7f744607235e974c7beb96b014c2b61;p=akkoma diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 125473b96..02255e0a4 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1,6 +1,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do - alias Pleroma.Repo - alias Pleroma.{Activity, Object, Upload, User} + alias Pleroma.{Activity, Repo, Object, Upload, User, Web} + alias Ecto.{Changeset, UUID} import Ecto.Query def insert(map) when is_map(map) do @@ -19,7 +19,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do Repo.insert(%Activity{data: map}) end - def like(%User{ap_id: ap_id} = user, %Object{data: %{ "id" => id}} = object) do + def like(%User{ap_id: ap_id} = user, %Object{data: %{"id" => id}} = object) do cond do # There's already a like here, so return the original activity. ap_id in (object.data["likes"] || []) -> @@ -44,7 +44,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do |> Map.put("like_count", length(likes)) |> Map.put("likes", likes) - changeset = Ecto.Changeset.change(object, data: new_data) + changeset = Changeset.change(object, data: new_data) {:ok, object} = Repo.update(changeset) update_object_in_activities(object) @@ -58,7 +58,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do relevant_activities = Activity.all_by_object_ap_id(id) Enum.map(relevant_activities, fn (activity) -> new_activity_data = activity.data |> Map.put("object", object.data) - changeset = Ecto.Changeset.change(activity, data: new_activity_data) + changeset = Changeset.change(activity, data: new_activity_data) Repo.update(changeset) end) end @@ -79,7 +79,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do |> Map.put("like_count", length(likes)) |> Map.put("likes", likes) - changeset = Ecto.Changeset.change(object, data: new_data) + changeset = Changeset.change(object, data: new_data) {:ok, object} = Repo.update(changeset) update_object_in_activities(object) @@ -103,7 +103,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end def generate_id(type) do - "#{Pleroma.Web.base_url()}/#{type}/#{Ecto.UUID.generate}" + "#{Web.base_url()}/#{type}/#{UUID.generate}" end def fetch_public_activities(opts \\ %{}) do @@ -133,8 +133,14 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do query end - Repo.all(query) - |> Enum.reverse + query = if opts["actor_id"] do + from activity in query, + where: fragment("? @> ?", activity.data, ^%{actor: opts["actor_id"]}) + else + query + end + + Enum.reverse(Repo.all(query)) end def announce(%User{ap_id: ap_id} = user, %Object{data: %{"id" => id}} = object) do @@ -153,7 +159,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do |> Map.put("announcement_count", length(announcements)) |> Map.put("announcements", announcements) - changeset = Ecto.Changeset.change(object, data: new_data) + changeset = Changeset.change(object, data: new_data) {:ok, object} = Repo.update(changeset) update_object_in_activities(object)