diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/side_effects.ex | 6 | ||||
| -rw-r--r-- | lib/pleroma/web/common_api/common_api.ex | 10 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_test.exs | 2 | ||||
| -rw-r--r-- | test/web/mastodon_api/views/account_view_test.exs | 3 | 
4 files changed, 16 insertions, 5 deletions
diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index 284560913..de02baf0f 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -44,6 +44,8 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do        if followed.local && !followed.locked do          Utils.update_follow_state_for_all(object, "accept")          FollowingRelationship.update(follower, followed, :follow_accept) +        User.update_follower_count(followed) +        User.update_following_count(follower)          %{            to: [following_user], @@ -78,7 +80,9 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do        meta        |> add_notifications(notifications) -    {:ok, object, meta} +    updated_object = Activity.get_by_ap_id(follow_id) + +    {:ok, updated_object, meta}    end    # Tasks this handles: diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index fd7149079..4d5b0decf 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -101,10 +101,14 @@ defmodule Pleroma.Web.CommonAPI do    def follow(follower, followed) do      timeout = Pleroma.Config.get([:activitypub, :follow_handshake_timeout]) -    with {:ok, follower} <- User.maybe_direct_follow(follower, followed), -         {:ok, activity} <- ActivityPub.follow(follower, followed), +    with {:ok, follow_data, _} <- Builder.follow(follower, followed), +         {:ok, activity, _} <- Pipeline.common_pipeline(follow_data, local: true),           {:ok, follower, followed} <- User.wait_and_refresh(timeout, follower, followed) do -      {:ok, follower, followed, activity} +      if activity.data["state"] == "reject" do +        {:error, :rejected} +      else +        {:ok, follower, followed, activity} +      end      end    end diff --git a/test/web/mastodon_api/mastodon_api_test.exs b/test/web/mastodon_api/mastodon_api_test.exs index a7f9c5205..c08be37d4 100644 --- a/test/web/mastodon_api/mastodon_api_test.exs +++ b/test/web/mastodon_api/mastodon_api_test.exs @@ -18,7 +18,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPITest do        follower = insert(:user)        user = insert(:user, local: true, deactivated: true)        {:error, error} = MastodonAPI.follow(follower, user) -      assert error == "Could not follow user: #{user.nickname} is deactivated." +      assert error == :rejected      end      test "following for user" do diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 80b1f734c..3e2e780e3 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -372,6 +372,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do        user = insert(:user, hide_followers: true, hide_follows: true)        other_user = insert(:user)        {:ok, user, other_user, _activity} = CommonAPI.follow(user, other_user) + +      assert User.following?(user, other_user) +      assert Pleroma.FollowingRelationship.follower_count(other_user) == 1        {:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user)        assert %{  | 
