alias Pleroma.Activity
alias Pleroma.Notification
alias Pleroma.User
+ alias Pleroma.UserRelationship
alias Pleroma.Web.CommonAPI
alias Pleroma.Web.MastodonAPI.AccountView
alias Pleroma.Web.MastodonAPI.NotificationView
alias Pleroma.Web.MastodonAPI.StatusView
- def render("index.json", %{notifications: notifications, for: reading_user}) do
+ def render("index.json", %{notifications: notifications, for: reading_user} = opts) do
activities = Enum.map(notifications, & &1.activity)
parent_activities =
|> Activity.with_preloaded_object(:left)
|> Pleroma.Repo.all()
- move_activities_targets =
- activities
- |> Enum.filter(&(Activity.mastodon_notification_type(&1) == "move"))
- |> Enum.map(&User.get_cached_by_ap_id(&1.data["target"]))
+ relationships_opt =
+ cond do
+ Map.has_key?(opts, :relationships) ->
+ opts[:relationships]
- actors =
- activities
- |> Enum.map(fn a -> User.get_cached_by_ap_id(a.data["actor"]) end)
- |> Enum.filter(& &1)
- |> Kernel.++(move_activities_targets)
+ is_nil(reading_user) ->
+ UserRelationship.view_relationships_option(nil, [])
+
+ true ->
+ move_activities_targets =
+ activities
+ |> Enum.filter(&(Activity.mastodon_notification_type(&1) == "move"))
+ |> Enum.map(&User.get_cached_by_ap_id(&1.data["target"]))
+
+ actors =
+ activities
+ |> Enum.map(fn a -> User.get_cached_by_ap_id(a.data["actor"]) end)
+ |> Enum.filter(& &1)
+ |> Kernel.++(move_activities_targets)
+
+ UserRelationship.view_relationships_option(reading_user, actors)
+ end
opts = %{
for: reading_user,
parent_activities: parent_activities,
- relationships: StatusView.relationships_opts(reading_user, actors)
+ relationships: relationships_opt
}
safe_render_many(notifications, NotificationView, "show.json", opts)
}
}
- relationships_opts = %{relationships: opts[:relationships]}
+ render_opts = %{relationships: opts[:relationships]}
case mastodon_type do
"mention" ->
- put_status(response, activity, reading_user, relationships_opts)
+ put_status(response, activity, reading_user, render_opts)
"favourite" ->
- put_status(response, parent_activity_fn.(), reading_user, relationships_opts)
+ put_status(response, parent_activity_fn.(), reading_user, render_opts)
"reblog" ->
- put_status(response, parent_activity_fn.(), reading_user, relationships_opts)
+ put_status(response, parent_activity_fn.(), reading_user, render_opts)
"move" ->
- put_target(response, activity, reading_user, relationships_opts)
+ put_target(response, activity, reading_user, render_opts)
"follow" ->
response
"pleroma:emoji_reaction" ->
response
- |> put_status(parent_activity_fn.(), reading_user, relationships_opts)
+ |> put_status(parent_activity_fn.(), reading_user, render_opts)
|> put_emoji(activity)
_ ->