Commit d56866c8 authored by Sadposter's avatar Sadposter Committed by Hannah Ward
Browse files

Add subscribed status to user view

Added in pleroma extensions, but can be moved whenever
parent 75c4ceb4
......@@ -999,6 +999,11 @@ def blocks?(user, %{ap_id: ap_id}) do
end)
end
def subscribed_to?(user, %{ap_id: ap_id}) do
subs = user.info.subscriptions
Enum.member?(subs, ap_id)
end
def muted_users(user),
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.mutes))
......
......@@ -47,15 +47,16 @@ defp do_render("user.json", %{user: user = %User{}} = assigns) do
for_user = assigns[:for]
image = User.avatar_url(user) |> MediaProxy.url()
{following, follows_you, statusnet_blocking} =
{following, follows_you, statusnet_blocking, subscribed} =
if for_user do
{
User.following?(for_user, user),
User.following?(user, for_user),
User.blocks?(for_user, user)
User.blocks?(for_user, user),
User.subscribed_to?(for_user, user)
}
else
{false, false, false}
{false, false, false, false}
end
user_info = User.get_cached_user_info(user)
......@@ -116,7 +117,8 @@ defp do_render("user.json", %{user: user = %User{}} = assigns) do
"pleroma" =>
%{
"confirmation_pending" => user_info.confirmation_pending,
"tags" => user.tags
"tags" => user.tags,
"subscribed" => subscribed
}
|> maybe_with_activation_status(user, for_user)
}
......
......@@ -105,7 +105,8 @@ test "A user" do
"fields" => [],
"pleroma" => %{
"confirmation_pending" => false,
"tags" => []
"tags" => [],
"subscribed" => false
}
}
......@@ -153,7 +154,8 @@ test "A user for a given other follower", %{user: user} do
"fields" => [],
"pleroma" => %{
"confirmation_pending" => false,
"tags" => []
"tags" => [],
"subscribed" => false,
}
}
......@@ -202,13 +204,22 @@ test "A user that follows you", %{user: user} do
"fields" => [],
"pleroma" => %{
"confirmation_pending" => false,
"tags" => []
"tags" => [],
"subscribed" => false
}
}
assert represented == UserView.render("show.json", %{user: follower, for: user})
end
test "a user that you are subscribed to" do
user = insert(:user)
subscriber = insert(:user)
{:ok, subscriber} = User.subscribe(subscriber, user)
represented = UserView.render("show.json", %{user: user, for: subscriber})
assert represented["pleroma"]["subscribed"] == true
end
test "a user that is a moderator" do
user = insert(:user, %{info: %{is_moderator: true}})
represented = UserView.render("show.json", %{user: user, for: user})
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment