diff --git a/lib/pleroma/media.ex b/lib/pleroma/media.ex index d007a7f89..431c06bb5 100644 --- a/lib/pleroma/media.ex +++ b/lib/pleroma/media.ex @@ -26,7 +26,9 @@ defmodule Pleroma.Media do timestamps() end - def create_from_object_data(%{"url" => [url]} = data, %{user: user} = _opts) do + def create_from_object_data(%{"url" => [url]} = data, %{user: user} = opts) do + object_id = get_in(opts, [:object, "id"]) + %Media{} |> changeset(%{ href: url["href"], @@ -35,7 +37,8 @@ defmodule Pleroma.Media do name: data["name"], blurhash: nil, meta: %{}, - user_id: user.id + user_id: user.id, + object_id: object_id }) |> Repo.insert() end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index f9483d82e..39fe69524 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -164,7 +164,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp maybe_update_media(%Object{data: %{"attachment" => []}}), do: :ok - defp maybe_update_media(%Object{id: id, data: %{"attachment" => attachments}}) do + defp maybe_update_media(%Object{data: %{"id" => id, "attachment" => attachments}}) do Enum.each(attachments, fn data -> with %{"id" => media_id} <- data do media_id diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 7e2663e09..d18d30fee 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do alias Pleroma.Activity alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Maps + alias Pleroma.Media alias Pleroma.Object alias Pleroma.Object.Containment alias Pleroma.Repo @@ -272,9 +273,10 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do def fix_attachments(object), do: object def fix_media(%{"attachment" => [_ | _] = attachments} = object) do - Enum.each(attachments, fn attachment -> - IO.inspect({:fix_media, %{attachment: attachment, object: object}}) - end) + Enum.each( + attachments, + &Media.create_from_object_data(&1, %{user: User.get_by_ap_id(object.actor), object: object}) + ) object end