aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadposter <hannah+pleroma@coffee-and-dreams.uk>2019-04-05 15:21:33 +0100
committerHannah Ward <Hannah.ward9001@gmail.com>2019-04-05 15:30:31 +0100
commitd56866c824d8023c9ca162ffef4c2eff150de399 (patch)
tree1f3edaed802ec72e66c04b9141a024174a6e35fd
parent75c4ceb4a2e5b59607a4688a2519e2f784aaa8f6 (diff)
downloadpleroma-d56866c824d8023c9ca162ffef4c2eff150de399.tar.gz
Add subscribed status to user view
Added in pleroma extensions, but can be moved whenever
-rw-r--r--lib/pleroma/user.ex5
-rw-r--r--lib/pleroma/web/twitter_api/views/user_view.ex10
-rw-r--r--test/web/twitter_api/views/user_view_test.exs17
3 files changed, 25 insertions, 7 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 6b213df58..de7ed6e72 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -999,6 +999,11 @@ defmodule Pleroma.User 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))
diff --git a/lib/pleroma/web/twitter_api/views/user_view.ex b/lib/pleroma/web/twitter_api/views/user_view.ex
index 0791ed760..c59570d3e 100644
--- a/lib/pleroma/web/twitter_api/views/user_view.ex
+++ b/lib/pleroma/web/twitter_api/views/user_view.ex
@@ -47,15 +47,16 @@ defmodule Pleroma.Web.TwitterAPI.UserView 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 @@ defmodule Pleroma.Web.TwitterAPI.UserView do
"pleroma" =>
%{
"confirmation_pending" => user_info.confirmation_pending,
- "tags" => user.tags
+ "tags" => user.tags,
+ "subscribed" => subscribed
}
|> maybe_with_activation_status(user, for_user)
}
diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs
index 0feaf4b64..f9ae5888c 100644
--- a/test/web/twitter_api/views/user_view_test.exs
+++ b/test/web/twitter_api/views/user_view_test.exs
@@ -105,7 +105,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
"fields" => [],
"pleroma" => %{
"confirmation_pending" => false,
- "tags" => []
+ "tags" => [],
+ "subscribed" => false
}
}
@@ -153,7 +154,8 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
"fields" => [],
"pleroma" => %{
"confirmation_pending" => false,
- "tags" => []
+ "tags" => [],
+ "subscribed" => false,
}
}
@@ -202,13 +204,22 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest 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})