projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge develop
[akkoma]
/
lib
/
pleroma
/
web
/
mastodon_api
/
views
/
account_view.ex
diff --git
a/lib/pleroma/web/mastodon_api/views/account_view.ex
b/lib/pleroma/web/mastodon_api/views/account_view.ex
index 0ec9ecd93f15c7ab8f50f6752323c9f623876803..169116d0d421bae977c5f0abb00d319bb574e739 100644
(file)
--- a/
lib/pleroma/web/mastodon_api/views/account_view.ex
+++ b/
lib/pleroma/web/mastodon_api/views/account_view.ex
@@
-28,7
+28,7
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
id: to_string(user.id),
acct: user.nickname,
username: username_from_nickname(user.nickname),
id: to_string(user.id),
acct: user.nickname,
username: username_from_nickname(user.nickname),
- url:
user.ap_id
+ url:
User.profile_url(user)
}
end
}
end
@@
-37,11
+37,11
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
end
def render("relationship.json", %{user: %User{} = user, target: %User{} = target}) 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 =
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
else
false
end
@@
-50,12
+50,13
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
id: to_string(target.id),
following: User.following?(user, target),
followed_by: User.following?(target, user),
id: to_string(target.id),
following: User.following?(user, target),
followed_by: User.following?(target, user),
- blocking: User.blocks?(user, target),
+ blocking: User.blocks_ap_id?(user, target),
+ blocked_by: User.blocks_ap_id?(target, user),
muting: User.mutes?(user, target),
muting: User.mutes?(user, target),
- muting_notifications:
false
,
+ muting_notifications:
User.muted_notifications?(user, target)
,
subscribing: User.subscribed_to?(user, target),
requested: requested,
subscribing: User.subscribed_to?(user, target),
requested: requested,
- domain_blocking:
false
,
+ domain_blocking:
User.blocks_domain?(user, target)
,
showing_reblogs: User.showing_reblogs?(user, target),
endorsed: false
}
showing_reblogs: User.showing_reblogs?(user, target),
endorsed: false
}
@@
-66,9
+67,18
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
end
defp do_render("account.json", %{user: user} = opts) do
end
defp do_render("account.json", %{user: user} = opts) do
+ display_name = HTML.strip_tags(user.name || user.nickname)
+
image = User.avatar_url(user) |> MediaProxy.url()
header = User.banner_url(user) |> MediaProxy.url()
user_info = User.get_cached_user_info(user)
image = User.avatar_url(user) |> MediaProxy.url()
header = User.banner_url(user) |> MediaProxy.url()
user_info = User.get_cached_user_info(user)
+
+ following_count =
+ ((!user.info.hide_follows or opts[:for] == user) && user_info.following_count) || 0
+
+ followers_count =
+ ((!user.info.hide_followers or opts[:for] == user) && user_info.follower_count) || 0
+
bot = (user.info.source_data["type"] || "Person") in ["Application", "Service"]
emojis =
bot = (user.info.source_data["type"] || "Person") in ["Application", "Service"]
emojis =
@@
-84,26
+94,32
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
end)
fields =
end)
fields =
- (user.info.source_data["attachment"] || [])
- |> Enum.filter(fn %{"type" => t} -> t == "PropertyValue" end)
- |> Enum.map(fn fields -> Map.take(fields, ["name", "value"]) end)
+ 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})
%{
id: to_string(user.id),
username: username_from_nickname(user.nickname),
acct: user.nickname,
relationship = render("relationship.json", %{user: opts[:for], target: user})
%{
id: to_string(user.id),
username: username_from_nickname(user.nickname),
acct: user.nickname,
- display_name:
user.name || user.nick
name,
+ display_name:
display_
name,
locked: user_info.locked,
created_at: Utils.to_masto_date(user.inserted_at),
locked: user_info.locked,
created_at: Utils.to_masto_date(user.inserted_at),
- followers_count:
user_info.follower
_count,
- following_count:
user_info.
following_count,
+ followers_count:
followers
_count,
+ following_count: following_count,
statuses_count: user_info.note_count,
note: bio || "",
statuses_count: user_info.note_count,
note: bio || "",
- url:
user.ap_id
,
+ url:
User.profile_url(user)
,
avatar: image,
avatar_static: image,
header: header,
avatar: image,
avatar_static: image,
header: header,
@@
-114,6
+130,7
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
source: %{
note: HTML.strip_tags((user.bio || "") |> String.replace("<br>", "\n")),
sensitive: false,
source: %{
note: HTML.strip_tags((user.bio || "") |> String.replace("<br>", "\n")),
sensitive: false,
+ fields: raw_fields,
pleroma: %{}
},
pleroma: %{}
},
@@
-133,6
+150,8
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
|> maybe_put_settings(user, opts[:for], user_info)
|> maybe_put_notification_settings(user, opts[:for])
|> maybe_put_settings_store(user, opts[:for], opts)
|> maybe_put_settings(user, opts[:for], user_info)
|> maybe_put_notification_settings(user, opts[:for])
|> maybe_put_settings_store(user, opts[:for], opts)
+ |> maybe_put_chat_token(user, opts[:for], opts)
+ |> maybe_put_activation_status(user, opts[:for])
end
defp username_from_nickname(string) when is_binary(string) do
end
defp username_from_nickname(string) when is_binary(string) do
@@
-164,6
+183,15
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
defp maybe_put_settings_store(data, _, _, _), do: data
defp maybe_put_settings_store(data, _, _, _), do: data
+ defp maybe_put_chat_token(data, %User{id: id}, %User{id: id}, %{
+ with_chat_token: token
+ }) do
+ data
+ |> Kernel.put_in([:pleroma, :chat_token], token)
+ end
+
+ defp maybe_put_chat_token(data, _, _, _), do: data
+
defp maybe_put_role(data, %User{info: %{show_role: true}} = user, _) do
data
|> Kernel.put_in([:pleroma, :is_admin], user.info.is_admin)
defp maybe_put_role(data, %User{info: %{show_role: true}} = user, _) do
data
|> Kernel.put_in([:pleroma, :is_admin], user.info.is_admin)
@@
-184,6
+212,12
@@
defmodule Pleroma.Web.MastodonAPI.AccountView do
defp maybe_put_notification_settings(data, _, _), do: data
defp maybe_put_notification_settings(data, _, _), do: data
+ defp maybe_put_activation_status(data, user, %User{info: %{is_admin: true}}) do
+ Kernel.put_in(data, [:pleroma, :deactivated], user.info.deactivated)
+ end
+
+ defp maybe_put_activation_status(data, _, _), do: data
+
defp image_url(%{"url" => [%{"href" => href} | _]}), do: href
defp image_url(_), do: nil
end
defp image_url(%{"url" => [%{"href" => href} | _]}), do: href
defp image_url(_), do: nil
end