|
|
|
@ -18,15 +18,48 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
|
|
|
|
|
|
|
|
|
|
def render("account.json", %{user: user} = opts) do
|
|
|
|
|
if User.visible_for?(user, opts[:for]),
|
|
|
|
|
do: render("valid_account.json", opts),
|
|
|
|
|
else: render("invalid_account.json", opts)
|
|
|
|
|
do: do_render("account.json", opts),
|
|
|
|
|
else: %{}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render("invalid_account.json", _opts) do
|
|
|
|
|
%{}
|
|
|
|
|
def render("mention.json", %{user: user}) do
|
|
|
|
|
%{
|
|
|
|
|
id: to_string(user.id),
|
|
|
|
|
acct: user.nickname,
|
|
|
|
|
username: username_from_nickname(user.nickname),
|
|
|
|
|
url: user.ap_id
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render("relationship.json", %{user: user, target: target}) do
|
|
|
|
|
follow_activity = Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(user, target)
|
|
|
|
|
|
|
|
|
|
requested =
|
|
|
|
|
if follow_activity do
|
|
|
|
|
follow_activity.data["state"] == "pending"
|
|
|
|
|
else
|
|
|
|
|
false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
%{
|
|
|
|
|
id: to_string(target.id),
|
|
|
|
|
following: User.following?(user, target),
|
|
|
|
|
followed_by: User.following?(target, user),
|
|
|
|
|
blocking: User.blocks?(user, target),
|
|
|
|
|
muting: false,
|
|
|
|
|
muting_notifications: false,
|
|
|
|
|
requested: requested,
|
|
|
|
|
domain_blocking: false,
|
|
|
|
|
showing_reblogs: false,
|
|
|
|
|
endorsed: false
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render("valid_account.json", %{user: user} = opts) do
|
|
|
|
|
def render("relationships.json", %{user: user, targets: targets}) do
|
|
|
|
|
render_many(targets, AccountView, "relationship.json", user: user, as: :target)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
defp do_render("account.json", %{user: user} = opts) do
|
|
|
|
|
image = User.avatar_url(user) |> MediaProxy.url()
|
|
|
|
|
header = User.banner_url(user) |> MediaProxy.url()
|
|
|
|
|
user_info = User.user_info(user)
|
|
|
|
@ -84,43 +117,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render("mention.json", %{user: user}) do
|
|
|
|
|
%{
|
|
|
|
|
id: to_string(user.id),
|
|
|
|
|
acct: user.nickname,
|
|
|
|
|
username: username_from_nickname(user.nickname),
|
|
|
|
|
url: user.ap_id
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render("relationship.json", %{user: user, target: target}) do
|
|
|
|
|
follow_activity = Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(user, target)
|
|
|
|
|
|
|
|
|
|
requested =
|
|
|
|
|
if follow_activity do
|
|
|
|
|
follow_activity.data["state"] == "pending"
|
|
|
|
|
else
|
|
|
|
|
false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
%{
|
|
|
|
|
id: to_string(target.id),
|
|
|
|
|
following: User.following?(user, target),
|
|
|
|
|
followed_by: User.following?(target, user),
|
|
|
|
|
blocking: User.blocks?(user, target),
|
|
|
|
|
muting: false,
|
|
|
|
|
muting_notifications: false,
|
|
|
|
|
requested: requested,
|
|
|
|
|
domain_blocking: false,
|
|
|
|
|
showing_reblogs: false,
|
|
|
|
|
endorsed: false
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def render("relationships.json", %{user: user, targets: targets}) do
|
|
|
|
|
render_many(targets, AccountView, "relationship.json", user: user, as: :target)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
defp username_from_nickname(string) when is_binary(string) do
|
|
|
|
|
hd(String.split(string, "@"))
|
|
|
|
|
end
|
|
|
|
|