[#1706] Prevented error on unresolved activity actors for timeline actions.
This commit is contained in:
parent
8addbd948c
commit
0d05e1fe39
|
@ -8,15 +8,16 @@ defmodule Pleroma.Web.AdminAPI.StatusView do
|
||||||
require Pleroma.Constants
|
require Pleroma.Constants
|
||||||
|
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
|
|
||||||
def render("index.json", opts) do
|
def render("index.json", opts) do
|
||||||
safe_render_many(opts.activities, __MODULE__, "show.json", opts)
|
safe_render_many(opts.activities, __MODULE__, "show.json", opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} = opts) do
|
def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} = opts) do
|
||||||
user = get_user(activity.data["actor"])
|
user = StatusView.get_user(activity.data["actor"])
|
||||||
|
|
||||||
Pleroma.Web.MastodonAPI.StatusView.render("show.json", opts)
|
StatusView.render("show.json", opts)
|
||||||
|> Map.merge(%{account: merge_account_views(user)})
|
|> Map.merge(%{account: merge_account_views(user)})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -26,17 +27,4 @@ defp merge_account_views(%User{} = user) do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp merge_account_views(_), do: %{}
|
defp merge_account_views(_), do: %{}
|
||||||
|
|
||||||
defp get_user(ap_id) do
|
|
||||||
cond do
|
|
||||||
user = User.get_cached_by_ap_id(ap_id) ->
|
|
||||||
user
|
|
||||||
|
|
||||||
user = User.get_by_guessed_nickname(ap_id) ->
|
|
||||||
user
|
|
||||||
|
|
||||||
true ->
|
|
||||||
User.error_user(ap_id)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -45,7 +45,7 @@ defp get_replied_to_activities(activities) do
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_user(ap_id) do
|
def get_user(ap_id, fake_record_fallback \\ true) do
|
||||||
cond do
|
cond do
|
||||||
user = User.get_cached_by_ap_id(ap_id) ->
|
user = User.get_cached_by_ap_id(ap_id) ->
|
||||||
user
|
user
|
||||||
|
@ -53,8 +53,11 @@ defp get_user(ap_id) do
|
||||||
user = User.get_by_guessed_nickname(ap_id) ->
|
user = User.get_by_guessed_nickname(ap_id) ->
|
||||||
user
|
user
|
||||||
|
|
||||||
true ->
|
fake_record_fallback ->
|
||||||
|
# TODO: refactor (fake records is never a good idea)
|
||||||
User.error_user(ap_id)
|
User.error_user(ap_id)
|
||||||
|
|
||||||
|
true -> nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -97,7 +100,11 @@ def render("index.json", opts) do
|
||||||
UserRelationship.view_relationships_option(nil, [])
|
UserRelationship.view_relationships_option(nil, [])
|
||||||
|
|
||||||
true ->
|
true ->
|
||||||
actors = Enum.map(activities ++ parent_activities, &get_user(&1.data["actor"]))
|
# Note: unresolved users are filtered out
|
||||||
|
actors =
|
||||||
|
(activities ++ parent_activities)
|
||||||
|
|> Enum.map(&get_user(&1.data["actor"], false))
|
||||||
|
|> Enum.filter(& &1)
|
||||||
|
|
||||||
UserRelationship.view_relationships_option(reading_user, actors,
|
UserRelationship.view_relationships_option(reading_user, actors,
|
||||||
source_mutes_only: opts[:skip_relationships]
|
source_mutes_only: opts[:skip_relationships]
|
||||||
|
|
Loading…
Reference in New Issue