aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex8
-rw-r--r--lib/pleroma/web/mastodon_api/views/status_view.ex2
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index fa62e0db2..c4b11a655 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -558,6 +558,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def handle_incoming(%{"type" => type} = data, _options) when type in ~w(Add Remove) do
with {:ok, %User{} = user} <- ObjectValidator.fetch_actor(data),
+ # maybe locally user doesn't have featured_address
+ {:ok, user} <- maybe_refetch_user(user),
%Object{} <- Object.normalize(data["object"], fetch: true) do
# Mastodon sends pin/unpin objects without id, to, cc fields
data =
@@ -669,6 +671,12 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def handle_incoming(_, _), do: :error
+ defp maybe_refetch_user(%User{featured_address: address} = user) when is_binary(address) do
+ {:ok, user}
+ end
+
+ defp maybe_refetch_user(%User{ap_id: ap_id}), do: upgrade_user_from_ap_id(ap_id)
+
@spec get_obj_helper(String.t(), Keyword.t()) :: {:ok, Object.t()} | nil
def get_obj_helper(id, options \\ []) do
options = Keyword.put(options, :fetch, true)
diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex
index d0247fa4a..814b3d142 100644
--- a/lib/pleroma/web/mastodon_api/views/status_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/status_view.ex
@@ -152,7 +152,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|> Enum.filter(& &1)
|> Enum.map(fn user -> AccountView.render("mention.json", %{user: user}) end)
- {pinned?, pinned_at} = pin_data(activity_object, user)
+ {pinned?, pinned_at} = pin_data(object, user)
%{
id: to_string(activity.id),