aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/mastodon_api
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-09-26 14:28:35 +0700
committerEgor Kislitsyn <egor@kislitsyn.com>2019-09-27 10:52:47 +0700
commit5ea5c58a85b7be56370b151ce8977982d47fde8c (patch)
treea48af9bf72549d691386ca01f0be3f1ca8db4926 /lib/pleroma/web/mastodon_api
parent76b7e5cd5b34e68055bab7353cb845f3429d897f (diff)
downloadpleroma-5ea5c58a85b7be56370b151ce8977982d47fde8c.tar.gz
Move view logic from StatusController.context to StatusView and add a test
Diffstat (limited to 'lib/pleroma/web/mastodon_api')
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/status_controller.ex27
-rw-r--r--lib/pleroma/web/mastodon_api/views/status_view.ex14
2 files changed, 15 insertions, 26 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex
index 89869bda0..f7da10289 100644
--- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex
@@ -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
diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex
index 59bef30f2..715d40766 100644
--- a/lib/pleroma/web/mastodon_api/views/status_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/status_view.ex
@@ -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)