+ end
+
+ def publish(_), do: {:error, "Not implemented"}
+
+ @spec list() :: {:ok, [%{actor: String.t(), followed_back: boolean()}]} | {:error, any()}
+ def list do
+ with %User{} = user <- get_actor() do
+ accepted =
+ user
+ |> following()
+ |> Enum.map(fn actor -> %{actor: actor, followed_back: true} end)
+
+ without_accept =
+ user
+ |> Pleroma.Activity.following_requests_for_actor()
+ |> Enum.map(fn activity -> %{actor: activity.data["object"], followed_back: false} end)
+ |> Enum.uniq()
+
+ {:ok, accepted ++ without_accept}
+ else
+ error -> format_error(error)
+ end
+ end
+
+ @spec following() :: [String.t()]
+ def following do
+ get_actor()
+ |> following()
+ end
+
+ defp following(user) do
+ user
+ |> User.following_ap_ids()
+ |> Enum.uniq()
+ end
+
+ defp format_error({:error, error}), do: format_error(error)