diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-05-28 16:42:18 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-06-11 22:15:53 +0000 |
commit | 1452b2823fbd858f2b818c35ca1faedb0d222690 (patch) | |
tree | 99ca71e29a3dba1170e3445548b0afb56f9ad97d | |
parent | 76f80ba8c23798d69ecc6b89d6fd42a1d37adeed (diff) | |
download | pleroma-1452b2823fbd858f2b818c35ca1faedb0d222690.tar.gz |
user: add a workaround for situations where Pleroma may believe a followee is followed
this was caused by lack of Undo follows in the early days, and can likely be eventually removed
-rw-r--r-- | lib/pleroma/user.ex | 8 | ||||
-rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 9c0cc7455..1dcb68470 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -197,6 +197,14 @@ defmodule Pleroma.User do end end + def maybe_follow(%User{} = follower, %User{info: info} = followed) do + if not following?(follower, followed) do + follow(follower, followed) + else + {:ok, follower} + end + end + def follow(%User{} = follower, %User{info: info} = followed) do ap_followers = followed.follower_address diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index caff4ad86..922b83ed0 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -499,7 +499,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do def authorize_follow_request(%{assigns: %{user: followed}} = conn, %{"id" => id}) do with %User{} = follower <- Repo.get(User, id), - {:ok, follower} <- User.follow(follower, followed), + {:ok, follower} <- User.maybe_follow(follower, followed), %Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), {:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "accept"), {:ok, _activity} <- |