Merge remote-tracking branch 'remotes/origin/develop' into 2168-media-preview-proxy
[akkoma] / lib / pleroma / web / activity_pub / object_validators / create_generic_validator.ex
index 2569df7f69f11fbb08996ef086ef049122b3cc07..60868eae08ac83c1fd326227bdae9548d97b777f 100644 (file)
@@ -29,7 +29,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidator do
     field(:context, :string)
   end
 
-  def cast_data(data) do
+  def cast_data(data, meta \\ []) do
+    data = fix(data, meta)
+
     %__MODULE__{}
     |> changeset(data)
   end
@@ -42,7 +44,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidator do
 
   def cast_and_validate(data, meta \\ []) do
     data
-    |> cast_data
+    |> cast_data(meta)
     |> validate_data(meta)
   end
 
@@ -51,6 +53,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidator do
     |> cast(data, __schema__(:fields))
   end
 
+  defp fix_context(data, meta) do
+    if object = meta[:object_data] do
+      Map.put_new(data, "context", object["context"])
+    else
+      data
+    end
+  end
+
+  defp fix(data, meta) do
+    data
+    |> fix_context(meta)
+  end
+
   def validate_data(cng, meta \\ []) do
     cng
     |> validate_required([:actor, :type, :object])