- def fetch_friend_statuses(user, opts \\ %{}) do
- ActivityPub.fetch_activities([user.ap_id | user.following], opts)
- |> activities_to_statuses(%{for: user})
- end
-
- def fetch_public_statuses(user, opts \\ %{}) do
- opts = Map.put(opts, "local_only", true)
- ActivityPub.fetch_public_activities(opts)
- |> activities_to_statuses(%{for: user})
- end
-
- def fetch_public_and_external_statuses(user, opts \\ %{}) do
- ActivityPub.fetch_public_activities(opts)
- |> activities_to_statuses(%{for: user})
- end
-
- def fetch_user_statuses(user, opts \\ %{}) do
- ActivityPub.fetch_activities([], opts)
- |> activities_to_statuses(%{for: user})
- end
-
- def fetch_mentions(user, opts \\ %{}) do
- ActivityPub.fetch_activities([user.ap_id], opts)
- |> activities_to_statuses(%{for: user})
- end
-
- def fetch_conversation(user, id) do
- with context when is_binary(context) <- conversation_id_to_context(id),
- activities <- ActivityPub.fetch_activities_for_context(context),
- statuses <- activities |> activities_to_statuses(%{for: user})
- do
- statuses
- else _e ->
- []
+ def follow(%User{} = follower, params) do
+ with {:ok, %User{} = followed} <- get_user(params),
+ {:ok, follower} <- User.maybe_direct_follow(follower, followed),
+ {:ok, activity} <- ActivityPub.follow(follower, followed) do
+ {:ok, follower, followed, activity}
+ else
+ err -> err