From cfffe5b248db1d849e54341f80b523418bf1bdba Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 10 Aug 2021 20:49:17 +0200 Subject: [PATCH] Better handle deleted comments Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/audience.ex | 5 +++++ lib/federation/activity_pub/transmogrifier.ex | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/lib/federation/activity_pub/audience.ex b/lib/federation/activity_pub/audience.ex index e78513050..2b6a6be5b 100644 --- a/lib/federation/activity_pub/audience.ex +++ b/lib/federation/activity_pub/audience.ex @@ -37,6 +37,11 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do %{"to" => maybe_add_group_members([], actor), "cc" => []} end + # Deleted comments are just like tombstones + def get_audience(%Comment{deleted_at: deleted_at}) when not is_nil(deleted_at) do + %{"to" => [@ap_public], "cc" => []} + end + def get_audience(%Comment{discussion: %Discussion{} = discussion}) do get_audience(discussion) end diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index 95f535702..e7c06ce12 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -1110,6 +1110,10 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do {:error, error_message, object} when error_message in ["Gone", "Not found"] -> {:ok, object} + # comments are just emptied + {:ok, %Comment{deleted_at: deleted_at} = object} when not is_nil(deleted_at) -> + {:ok, object} + {:ok, %{url: url} = object} -> if Utils.are_same_origin?(url, Endpoint.url()), do: {:ok, object},