aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHaelwenn <contact+git.pleroma.social@hacktivis.me>2020-07-27 21:20:52 +0000
committerHaelwenn <contact+git.pleroma.social@hacktivis.me>2020-07-27 21:20:52 +0000
commit057936bf0b5af2cc35a6ecb1c800a841ca4760a8 (patch)
tree5f7aebf08a4cb5c2b2f020b5122c885f1a50ec6a /lib
parent2a3abfd326f0cbb588dfe66a23e9783be3038a5e (diff)
parent9e6f4694dd21f92bb2292e819d0f7f1cad149887 (diff)
downloadpleroma-057936bf0b5af2cc35a6ecb1c800a841ca4760a8.tar.gz
Merge branch 'embedded-object-federation' into 'develop'
Embedded object federation Closes #1959 See merge request pleroma/pleroma!2794
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/object_validator.ex7
-rw-r--r--lib/pleroma/web/activity_pub/pipeline.ex7
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex
index df926829c..0dcc7be4d 100644
--- a/lib/pleroma/web/activity_pub/object_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validator.ex
@@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do
the system.
"""
+ alias Pleroma.Activity
alias Pleroma.EctoType.ActivityPub.ObjectValidators
alias Pleroma.Object
alias Pleroma.User
@@ -71,6 +72,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do
|> UndoValidator.cast_and_validate()
|> Ecto.Changeset.apply_action(:insert) do
object = stringify_keys(object)
+ undone_object = Activity.get_by_ap_id(object["object"])
+
+ meta =
+ meta
+ |> Keyword.put(:object_data, undone_object.data)
+
{:ok, object, meta}
end
end
diff --git a/lib/pleroma/web/activity_pub/pipeline.ex b/lib/pleroma/web/activity_pub/pipeline.ex
index 6875c47f6..36e325c37 100644
--- a/lib/pleroma/web/activity_pub/pipeline.ex
+++ b/lib/pleroma/web/activity_pub/pipeline.ex
@@ -52,6 +52,13 @@ defmodule Pleroma.Web.ActivityPub.Pipeline do
do_not_federate = meta[:do_not_federate] || !Config.get([:instance, :federating])
if !do_not_federate && local do
+ activity =
+ if object = Keyword.get(meta, :object_data) do
+ %{activity | data: Map.put(activity.data, "object", object)}
+ else
+ activity
+ end
+
Federator.publish(activity)
{:ok, :federated}
else