X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fmastodon_api%2Fviews%2Faccount_view.ex;h=9fc06bf9d39187bf51f7675ce78b2fc3fc7ab93a;hb=b15cfc3d365dcfa5f99159fe06e29de6f8aceb4f;hp=c1786a322d3e2c3c3a8dc7143b8b9243ea12ede7;hpb=ac4250a18c27477974a643a730ef89d6c66220f9;p=akkoma
diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex
index c1786a322..9fc06bf9d 100644
--- a/lib/pleroma/web/mastodon_api/views/account_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/account_view.ex
@@ -12,17 +12,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
alias Pleroma.Web.MastodonAPI.AccountView
alias Pleroma.Web.MediaProxy
- # Default behaviour for account view is to include embedded relationships
- # (e.g. when accounts are rendered on their own [e.g. a list of search results], not as
- # embedded content in notifications / statuses).
- # This option must be explicitly set to false when rendering accounts as embedded content.
- defp initialize_skip_relationships(opts) do
- Map.merge(%{skip_relationships: false}, opts)
- end
-
def render("index.json", %{users: users} = opts) do
- opts = initialize_skip_relationships(opts)
-
reading_user = opts[:for]
relationships_opt =
@@ -30,7 +20,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
Map.has_key?(opts, :relationships) ->
opts[:relationships]
- is_nil(reading_user) || opts[:skip_relationships] ->
+ is_nil(reading_user) || !opts[:embed_relationships] ->
UserRelationship.view_relationships_option(nil, [])
true ->
@@ -169,8 +159,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
end
defp do_render("show.json", %{user: user} = opts) do
- opts = initialize_skip_relationships(opts)
-
user = User.sanitize_html(user, User.html_filter_policy(opts[:for]))
display_name = user.name || user.nickname
@@ -194,24 +182,26 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
bot = user.actor_type in ["Application", "Service"]
emojis =
- Enum.map(user.emoji, fn {shortcode, url} ->
+ Enum.map(user.emoji, fn {shortcode, raw_url} ->
+ url = MediaProxy.url(raw_url)
+
%{
- "shortcode" => shortcode,
- "url" => url,
- "static_url" => url,
- "visible_in_picker" => false
+ shortcode: shortcode,
+ url: url,
+ static_url: url,
+ visible_in_picker: false
}
end)
relationship =
- if opts[:skip_relationships] do
- %{}
- else
+ if opts[:embed_relationships] do
render("relationship.json", %{
user: opts[:for],
target: user,
relationships: opts[:relationships]
})
+ else
+ %{}
end
%{
@@ -245,6 +235,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
# Pleroma extension
pleroma: %{
+ ap_id: user.ap_id,
confirmation_pending: user.confirmation_pending,
tags: user.tags,
hide_followers_count: user.hide_followers_count,
@@ -272,7 +263,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
defp prepare_user_bio(%User{bio: ""}), do: ""
defp prepare_user_bio(%User{bio: bio}) when is_binary(bio) do
- bio |> String.replace(~r(
), "\n") |> Pleroma.HTML.strip_tags()
+ bio
+ |> String.replace(~r(
), "\n")
+ |> Pleroma.HTML.strip_tags()
+ |> HtmlEntities.decode()
end
defp prepare_user_bio(_), do: ""
@@ -345,7 +339,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
defp maybe_put_role(data, _, _), do: data
defp maybe_put_notification_settings(data, %User{id: user_id} = user, %User{id: user_id}) do
- Kernel.put_in(data, [:pleroma, :notification_settings], user.notification_settings)
+ Kernel.put_in(
+ data,
+ [:pleroma, :notification_settings],
+ Map.from_struct(user.notification_settings)
+ )
end
defp maybe_put_notification_settings(data, _, _), do: data