giant massive dep upgrade and dialyxir-found error emporium (#371)
[akkoma] / lib / pleroma / following_relationship.ex
index 42db9463db6508d6400af3fca8221c58e118a61e..c489ccbbe0d44cea41b4806ba4313259011179f3 100644 (file)
@@ -14,6 +14,8 @@ defmodule Pleroma.FollowingRelationship do
   alias Pleroma.Repo
   alias Pleroma.User
 
+  @type follow_state :: :follow_pending | :follow_accept | :follow_reject | :unfollow
+
   schema "following_relationships" do
     field(:state, State, default: :follow_pending)
 
@@ -72,6 +74,7 @@ defmodule Pleroma.FollowingRelationship do
     end
   end
 
+  @spec follow(User.t(), User.t()) :: {:ok, User.t(), User.t()} | {:error, any}
   def follow(%User{} = follower, %User{} = following, state \\ :follow_accept) do
     with {:ok, _following_relationship} <-
            %__MODULE__{}
@@ -81,6 +84,7 @@ defmodule Pleroma.FollowingRelationship do
     end
   end
 
+  @spec unfollow(User.t(), User.t()) :: {:ok, User.t(), User.t()} | {:error, any}
   def unfollow(%User{} = follower, %User{} = following) do
     case get(follower, following) do
       %__MODULE__{} = following_relationship ->
@@ -89,10 +93,12 @@ defmodule Pleroma.FollowingRelationship do
         end
 
       _ ->
-        {:ok, nil}
+        {:ok, follower, following}
     end
   end
 
+  @spec after_update(follow_state(), User.t(), User.t()) ::
+          {:ok, User.t(), User.t()} | {:error, any()}
   defp after_update(state, %User{} = follower, %User{} = following) do
     with {:ok, following} <- User.update_follower_count(following),
          {:ok, follower} <- User.update_following_count(follower) do
@@ -103,6 +109,8 @@ defmodule Pleroma.FollowingRelationship do
       })
 
       {:ok, follower, following}
+    else
+      err -> {:error, err}
     end
   end