diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/following_relationship.ex | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/lib/pleroma/following_relationship.ex b/lib/pleroma/following_relationship.ex index 0b0219b82..cc381af53 100644 --- a/lib/pleroma/following_relationship.ex +++ b/lib/pleroma/following_relationship.ex @@ -30,9 +30,24 @@ defmodule Pleroma.FollowingRelationship do end def get(%User{} = follower, %User{} = following) do - __MODULE__ - |> where(follower_id: ^follower.id, following_id: ^following.id) - |> Repo.one() + following_relationship = + __MODULE__ + |> where(follower_id: ^follower.id, following_id: ^following.id) + |> Repo.one() + + case {following_relationship, following.local} do + {nil, false} -> + case Pleroma.Web.ActivityPub.Utils.fetch_latest_follow(follower, following) do + %{data: %{"state" => state}} when state in ["pending", "accept"] -> + %{state: state} + + _ -> + nil + end + + {following_relationship, _} -> + following_relationship + end end def update(follower, following, "reject"), do: unfollow(follower, following) @@ -58,8 +73,8 @@ defmodule Pleroma.FollowingRelationship do def unfollow(%User{} = follower, %User{} = following) do case get(follower, following) do - nil -> {:ok, nil} %__MODULE__{} = following_relationship -> Repo.delete(following_relationship) + _ -> {:ok, nil} end end |