From f7fc048aeb42ffbfce9f278b362c3d4766a4e9a2 Mon Sep 17 00:00:00 2001 From: eal Date: Wed, 8 Nov 2017 19:13:03 +0200 Subject: [PATCH] TwitterAPI user view: add follows_you. --- lib/pleroma/web/twitter_api/views/user_view.ex | 16 ++++++------- test/web/twitter_api/views/user_view_test.exs | 33 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/twitter_api/views/user_view.ex b/lib/pleroma/web/twitter_api/views/user_view.ex index d33c054f3..6c5676c04 100644 --- a/lib/pleroma/web/twitter_api/views/user_view.ex +++ b/lib/pleroma/web/twitter_api/views/user_view.ex @@ -16,15 +16,14 @@ defmodule Pleroma.Web.TwitterAPI.UserView do def render("user.json", %{user: user = %User{}} = assigns) do image = User.avatar_url(user) - following = if assigns[:for] do - User.following?(assigns[:for], user) + {following, follows_you, statusnet_blocking} = if assigns[:for] do + { + User.following?(assigns[:for], user), + User.following?(user, assigns[:for]), + User.blocks?(assigns[:for], user) + } else - false - end - statusnet_blocking = if assigns[:for] do - User.blocks?(assigns[:for], user) - else - false + {false, false, false} end user_info = User.get_cached_user_info(user) @@ -35,6 +34,7 @@ defmodule Pleroma.Web.TwitterAPI.UserView do "favourites_count" => 0, "followers_count" => user_info[:follower_count], "following" => following, + "follows_you" => follows_you, "statusnet_blocking" => statusnet_blocking, "friends_count" => user_info[:following_count], "id" => user.id, diff --git a/test/web/twitter_api/views/user_view_test.exs b/test/web/twitter_api/views/user_view_test.exs index a942729c6..9f8e15574 100644 --- a/test/web/twitter_api/views/user_view_test.exs +++ b/test/web/twitter_api/views/user_view_test.exs @@ -50,6 +50,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "profile_image_url_profile_size" => image, "profile_image_url_original" => image, "following" => false, + "follows_you" => false, "statusnet_blocking" => false, "rights" => %{}, "statusnet_profile_url" => user.ap_id, @@ -79,6 +80,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "profile_image_url_profile_size" => image, "profile_image_url_original" => image, "following" => true, + "follows_you" => false, "statusnet_blocking" => false, "rights" => %{}, "statusnet_profile_url" => user.ap_id, @@ -89,6 +91,36 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do assert represented == UserView.render("show.json", %{user: user, for: follower}) end + test "A user that follows you", %{user: user} do + {:ok, follower} = UserBuilder.insert(%{following: [User.ap_followers(user)]}) + {:ok, user} = User.update_follower_count(user) + image = "https://placehold.it/48x48" + represented = %{ + "id" => follower.id, + "name" => follower.name, + "screen_name" => follower.nickname, + "description" => HtmlSanitizeEx.strip_tags(follower.bio), + "created_at" => follower.inserted_at |> Utils.format_naive_asctime, + "favourites_count" => 0, + "statuses_count" => 0, + "friends_count" => 1, + "followers_count" => 0, + "profile_image_url" => image, + "profile_image_url_https" => image, + "profile_image_url_profile_size" => image, + "profile_image_url_original" => image, + "following" => false, + "follows_you" => true, + "statusnet_blocking" => false, + "rights" => %{}, + "statusnet_profile_url" => follower.ap_id, + "cover_photo" => nil, + "background_image" => nil + } + + assert represented == UserView.render("show.json", %{user: follower, for: user}) + end + test "A blocked user for the blocker", %{user: user} do user = insert(:user) blocker = insert(:user) @@ -109,6 +141,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do "profile_image_url_profile_size" => image, "profile_image_url_original" => image, "following" => false, + "follows_you" => false, "statusnet_blocking" => true, "rights" => %{}, "statusnet_profile_url" => user.ap_id,