Move view logic from StatusController.context to StatusView and add a test
This commit is contained in:
parent
76b7e5cd5b
commit
5ea5c58a85
3 changed files with 36 additions and 26 deletions
|
|
@ -21,7 +21,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
|
|||
alias Pleroma.Web.CommonAPI
|
||||
alias Pleroma.Web.MastodonAPI.AccountView
|
||||
alias Pleroma.Web.MastodonAPI.ScheduledActivityView
|
||||
alias Pleroma.Web.MastodonAPI.StatusView
|
||||
|
||||
@rate_limited_status_actions ~w(reblog unreblog favourite unfavourite create delete)a
|
||||
|
||||
|
|
@ -264,31 +263,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do
|
|||
"exclude_id" => activity.id
|
||||
})
|
||||
|
||||
# TODO: Move to view
|
||||
grouped_activities = Enum.group_by(activities, fn %{id: id} -> id < activity.id end)
|
||||
|
||||
result = %{
|
||||
ancestors:
|
||||
StatusView.render(
|
||||
"index.json",
|
||||
for: user,
|
||||
activities: grouped_activities[true] || [],
|
||||
as: :activity
|
||||
)
|
||||
|> Enum.reverse(),
|
||||
# credo:disable-for-previous-line Credo.Check.Refactor.PipeChainStart
|
||||
descendants:
|
||||
StatusView.render(
|
||||
"index.json",
|
||||
for: user,
|
||||
activities: grouped_activities[false] || [],
|
||||
as: :activity
|
||||
)
|
||||
|> Enum.reverse()
|
||||
# credo:disable-for-previous-line Credo.Check.Refactor.PipeChainStart
|
||||
}
|
||||
|
||||
json(conn, result)
|
||||
render(conn, "context.json", activity: activity, activities: activities, user: user)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -439,6 +439,20 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|
|||
end
|
||||
end
|
||||
|
||||
def render("context.json", %{activity: activity, activities: activities, user: user}) do
|
||||
%{ancestors: ancestors, descendants: descendants} =
|
||||
activities
|
||||
|> Enum.reverse()
|
||||
|> Enum.group_by(fn %{id: id} -> if id < activity.id, do: :ancestors, else: :descendants end)
|
||||
|> Map.put_new(:ancestors, [])
|
||||
|> Map.put_new(:descendants, [])
|
||||
|
||||
%{
|
||||
ancestors: render("index.json", for: user, activities: ancestors, as: :activity),
|
||||
descendants: render("index.json", for: user, activities: descendants, as: :activity)
|
||||
}
|
||||
end
|
||||
|
||||
def get_reply_to(activity, %{replied_to_activities: replied_to_activities}) do
|
||||
object = Object.normalize(activity)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue