Merge branch '1526-account-aliases' into 'develop'
[akkoma] / lib / pleroma / web / mastodon_api / views / account_view.ex
index b929d5a036af2dbbd59d588f84ce33f27b8dce43..948a05a6dc122ff0c33cdd6f8f637e18f023bfd5 100644 (file)
@@ -39,11 +39,12 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
 
   @doc """
   Renders specified user account.
-    :force option skips visibility check and renders any user (local or remote)
+    :skip_visibility_check option skips visibility check and renders any user (local or remote)
       regardless of [:pleroma, :restrict_unauthenticated] setting.
     :for option specifies the requester and can be a User record or nil.
+      Only use `user: user, for: user` when `user` is the actual requester of own profile.
   """
-  def render("show.json", %{user: _user, force: true} = opts) do
+  def render("show.json", %{user: _user, skip_visibility_check: true} = opts) do
     do_render("show.json", opts)
   end
 
@@ -56,7 +57,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
   end
 
   def render("show.json", _) do
-    raise "In order to prevent account accessibility issues, :force or :for option is required."
+    raise "In order to prevent account accessibility issues, " <>
+            ":skip_visibility_check or :for option is required."
   end
 
   def render("mention.json", %{user: user}) do
@@ -179,22 +181,20 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
     user = User.sanitize_html(user, User.html_filter_policy(opts[:for]))
     display_name = user.name || user.nickname
 
-    image = User.avatar_url(user) |> MediaProxy.url()
+    avatar = User.avatar_url(user) |> MediaProxy.url()
+    avatar_static = User.avatar_url(user) |> MediaProxy.preview_url(static: true)
     header = User.banner_url(user) |> MediaProxy.url()
+    header_static = User.banner_url(user) |> MediaProxy.preview_url(static: true)
 
     following_count =
-      if !user.hide_follows_count or !user.hide_follows or opts[:for] == user do
-        user.following_count || 0
-      else
-        0
-      end
+      if !user.hide_follows_count or !user.hide_follows or opts[:for] == user,
+        do: user.following_count,
+        else: 0
 
     followers_count =
-      if !user.hide_followers_count or !user.hide_followers or opts[:for] == user do
-        user.follower_count || 0
-      else
-        0
-      end
+      if !user.hide_followers_count or !user.hide_followers or opts[:for] == user,
+        do: user.follower_count,
+        else: 0
 
     bot = user.actor_type == "Service"
 
@@ -238,17 +238,17 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
       username: username_from_nickname(user.nickname),
       acct: user.nickname,
       display_name: display_name,
-      locked: user.locked,
+      locked: user.is_locked,
       created_at: Utils.to_masto_date(user.inserted_at),
       followers_count: followers_count,
       following_count: following_count,
       statuses_count: user.note_count,
-      note: user.bio || "",
+      note: user.bio,
       url: user.uri || user.ap_id,
-      avatar: image,
-      avatar_static: image,
+      avatar: avatar,
+      avatar_static: avatar_static,
       header: header,
-      header_static: header,
+      header_static: header_static,
       emojis: emojis,
       fields: user.fields,
       bot: bot,
@@ -257,7 +257,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
         sensitive: false,
         fields: user.raw_fields,
         pleroma: %{
-          discoverable: user.discoverable,
+          discoverable: user.is_discoverable,
           actor_type: user.actor_type
         }
       },
@@ -265,6 +265,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
       # Pleroma extension
       pleroma: %{
         ap_id: user.ap_id,
+        also_known_as: user.also_known_as,
         confirmation_pending: user.confirmation_pending,
         tags: user.tags,
         hide_followers_count: user.hide_followers_count,
@@ -384,7 +385,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
     data
     |> Kernel.put_in(
       [:pleroma, :unread_conversation_count],
-      user.unread_conversation_count
+      Pleroma.Conversation.Participation.unread_count(user)
     )
   end