followed_by =
if following_relationships do
- case FollowingRelationship.find(following_relationships, target, reading_user) do
- %{state: :follow_accept} -> true
- _ -> false
- end
+ target_to_user_following_relation =
+ FollowingRelationship.find(following_relationships, target, reading_user)
+
+ User.get_follow_state(target, reading_user, target_to_user_following_relation)
else
- User.following?(target, reading_user)
+ User.get_follow_state(target, reading_user)
end
subscribing =
%{
id: to_string(target.id),
following: follow_state == :follow_accept,
- followed_by: followed_by,
+ followed_by: followed_by == :follow_accept,
blocking:
UserRelationship.exists?(
user_relationships,
subscribing: subscribing,
notifying: subscribing,
requested: follow_state == :follow_pending,
+ requested_by: followed_by == :follow_pending,
domain_blocking: User.blocks_domain?(reading_user, target),
showing_reblogs:
not UserRelationship.exists?(
subscribing: false,
notifying: false,
requested: false,
+ requested_by: false,
domain_blocking: false,
showing_reblogs: true,
endorsed: false,
end
end
+ test "represent a relationship for a user with an inbound pending follow request" do
+ follower = insert(:user)
+ followed = insert(:user, is_locked: true)
+
+ {:ok, follower, followed, _} = CommonAPI.follow(follower, followed)
+
+ follower = User.get_cached_by_id(follower.id)
+ followed = User.get_cached_by_id(followed.id)
+
+ expected =
+ Map.merge(
+ @blank_response,
+ %{requested_by: true, followed_by: false, id: to_string(follower.id)}
+ )
+
+ test_relationship_rendering(followed, follower, expected)
+ end
+
test "returns the settings store if the requesting user is the represented user and it's requested specifically" do
user = insert(:user, pleroma_settings_store: %{fe: "test"})