From dbaa15232bfe4c2bc3e2b1a17cfc7503e7036d77 Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Wed, 9 Dec 2020 01:18:05 +0300 Subject: [PATCH] wip --- lib/pleroma/media.ex | 7 +++++-- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- lib/pleroma/web/activity_pub/transmogrifier.ex | 8 +++++--- 3 files changed, 11 insertions(+), 6 deletions(-) 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