diff options
| author | rinpatch <rinpatch@sdf.org> | 2019-09-13 11:36:49 +0300 | 
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2019-09-13 11:38:17 +0300 | 
| commit | ce23529d917c1830b270a29e774e4ed7768bfeff (patch) | |
| tree | b7ad9de686a323b0c9c77cb805285a08ed77ac10 /lib | |
| parent | b0e60580215e26caae6452099fa1fbace525937c (diff) | |
| download | pleroma-ce23529d917c1830b270a29e774e4ed7768bfeff.tar.gz pleroma-ce23529d917c1830b270a29e774e4ed7768bfeff.zip  | |
Use delivery info when federating deletes
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/delivery.ex | 4 | ||||
| -rw-r--r-- | lib/pleroma/user.ex | 4 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/publisher.ex | 15 | 
3 files changed, 22 insertions, 1 deletions
diff --git a/lib/pleroma/delivery.ex b/lib/pleroma/delivery.ex index f9a9e35cd..2e7c019fa 100644 --- a/lib/pleroma/delivery.ex +++ b/lib/pleroma/delivery.ex @@ -46,6 +46,10 @@ defmodule Pleroma.Delivery do      end    end +  # A hack because user delete activities have a fake id for whatever reason +  # TODO: Get rid of this +  def delete_all_by_object_id("pleroma:fake_object_id"), do: {0, []} +    def delete_all_by_object_id(object_id) do      from(d in Delivery, where: d.object_id == ^object_id)      |> Repo.delete_all() diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 9614acdab..785b22643 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1627,6 +1627,10 @@ defmodule Pleroma.User do    def is_internal_user?(%User{local: true, nickname: "internal." <> _}), do: true    def is_internal_user?(_), do: false +  # A hack because user delete activities have a fake id for whatever reason +  # TODO: Get rid of this +  def get_delivered_users_by_object_id("pleroma:fake_object_id"), do: [] +    def get_delivered_users_by_object_id(object_id) do      from(u in User,        inner_join: delivery in assoc(u, :deliveries), diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index c97405690..db64fd2f6 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -5,9 +5,11 @@  defmodule Pleroma.Web.ActivityPub.Publisher do    alias Pleroma.Activity    alias Pleroma.Config +  alias Pleroma.Delivery    alias Pleroma.HTTP    alias Pleroma.Instances    alias Pleroma.User +  alias Pleroma.Object    alias Pleroma.Web.ActivityPub.Relay    alias Pleroma.Web.ActivityPub.Transmogrifier @@ -107,7 +109,18 @@ defmodule Pleroma.Web.ActivityPub.Publisher do          {:ok, []}        end -    Pleroma.Web.Salmon.remote_users(actor, activity) ++ followers +    fetchers = +      with %Activity{data: %{"type" => "Delete"}} <- activity, +           %Object{id: object_id} <- Object.normalize(activity), +           fetchers <- User.get_delivered_users_by_object_id(object_id), +           _ <- Delivery.delete_all_by_object_id(object_id) do +        fetchers +      else +        _ -> +          [] +      end + +    Pleroma.Web.Salmon.remote_users(actor, activity) ++ followers ++ fetchers    end    defp get_cc_ap_ids(ap_id, recipients) do  | 
