TwitterAPI user view: add follows_you.
authoreal <eal@waifu.club>
Wed, 8 Nov 2017 17:13:03 +0000 (19:13 +0200)
committereal <eal@waifu.club>
Wed, 8 Nov 2017 17:13:03 +0000 (19:13 +0200)
lib/pleroma/web/twitter_api/views/user_view.ex
test/web/twitter_api/views/user_view_test.exs

index d33c054f3ae60ba2c525ddeab548c2cabc5ea78b..6c5676c04122018ed1675012b15b743dfb6b79de 100644 (file)
@@ -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,
index a942729c63d99e014194b556f7a9a18fcdefd6d8..9f8e15574b75aa184f48d22dcdd846734e12aa10 100644 (file)
@@ -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,