Merge develop
[akkoma] / lib / pleroma / web / mastodon_api / views / account_view.ex
index d2f3986ff0476b4ec8f711dffe810c669f1d8817..169116d0d421bae977c5f0abb00d319bb574e739 100644 (file)
@@ -37,11 +37,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
   end
 
   def render("relationship.json", %{user: %User{} = user, target: %User{} = target}) do
-    follow_activity = Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(user, target)
+    follow_state = User.get_cached_follow_state(user, target)
 
     requested =
-      if follow_activity && !User.following?(target, user) do
-        follow_activity.data["state"] == "pending"
+      if follow_state && !User.following?(user, target) do
+        follow_state == "pending"
       else
         false
       end
@@ -93,11 +93,19 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
         }
       end)
 
-    fields = User.Info.fields(user.info)
-    fields_html = Enum.map(fields, fn f -> Map.update!(f, "value", &AutoLinker.link(&1)) end)
+    fields =
+      user.info
+      |> User.Info.fields()
+      |> Enum.map(fn %{"name" => name, "value" => value} ->
+        %{
+          "name" => Pleroma.HTML.strip_tags(name),
+          "value" => Pleroma.HTML.filter_tags(value, Pleroma.HTML.Scrubber.LinksOnly)
+        }
+      end)
 
-    bio = HTML.filter_tags(user.bio, User.html_filter_policy(opts[:for]))
+    raw_fields = Map.get(user.info, :raw_fields, [])
 
+    bio = HTML.filter_tags(user.bio, User.html_filter_policy(opts[:for]))
     relationship = render("relationship.json", %{user: opts[:for], target: user})
 
     %{
@@ -117,12 +125,12 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
       header: header,
       header_static: header,
       emojis: emojis,
-      fields: fields_html,
+      fields: fields,
       bot: bot,
       source: %{
         note: HTML.strip_tags((user.bio || "") |> String.replace("<br>", "\n")),
         sensitive: false,
-        fields: fields,
+        fields: raw_fields,
         pleroma: %{}
       },