|
|
@ -292,13 +292,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
def dm_timeline(%{assigns: %{user: user}} = conn, params) do
|
|
|
|
def dm_timeline(%{assigns: %{user: user}} = conn, params) do
|
|
|
|
query =
|
|
|
|
params =
|
|
|
|
ActivityPub.fetch_activities_query(
|
|
|
|
params
|
|
|
|
[user.ap_id],
|
|
|
|
|> Map.put("type", "Create")
|
|
|
|
Map.merge(params, %{"type" => "Create", visibility: "direct"})
|
|
|
|
|> Map.put("blocking_user", user)
|
|
|
|
)
|
|
|
|
|> Map.put("user", user)
|
|
|
|
|
|
|
|
|> Map.put(:visibility, "direct")
|
|
|
|
|
|
|
|
|
|
|
|
activities = Repo.all(query)
|
|
|
|
activities =
|
|
|
|
|
|
|
|
ActivityPub.fetch_activities_query([user.ap_id], params)
|
|
|
|
|
|
|
|
|> Repo.all()
|
|
|
|
|
|
|
|
|
|
|
|
conn
|
|
|
|
conn
|
|
|
|
|> add_link_headers(:dm_timeline, activities)
|
|
|
|
|> add_link_headers(:dm_timeline, activities)
|
|
|
@ -733,14 +736,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
|
|
|
|
|
|
|
|
|
|
|
def follow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do
|
|
|
|
def follow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do
|
|
|
|
with %User{} = followed <- Repo.get(User, id),
|
|
|
|
with %User{} = followed <- Repo.get(User, id),
|
|
|
|
{:ok, follower} <- User.maybe_direct_follow(follower, followed),
|
|
|
|
{:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do
|
|
|
|
{:ok, _activity} <- ActivityPub.follow(follower, followed),
|
|
|
|
|
|
|
|
{:ok, follower, followed} <-
|
|
|
|
|
|
|
|
User.wait_and_refresh(
|
|
|
|
|
|
|
|
Config.get([:activitypub, :follow_handshake_timeout]),
|
|
|
|
|
|
|
|
follower,
|
|
|
|
|
|
|
|
followed
|
|
|
|
|
|
|
|
) do
|
|
|
|
|
|
|
|
conn
|
|
|
|
conn
|
|
|
|
|> put_view(AccountView)
|
|
|
|
|> put_view(AccountView)
|
|
|
|
|> render("relationship.json", %{user: follower, target: followed})
|
|
|
|
|> render("relationship.json", %{user: follower, target: followed})
|
|
|
@ -754,8 +750,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
|
|
|
|
|
|
|
|
|
|
|
def follow(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do
|
|
|
|
def follow(%{assigns: %{user: follower}} = conn, %{"uri" => uri}) do
|
|
|
|
with %User{} = followed <- Repo.get_by(User, nickname: uri),
|
|
|
|
with %User{} = followed <- Repo.get_by(User, nickname: uri),
|
|
|
|
{:ok, follower} <- User.maybe_direct_follow(follower, followed),
|
|
|
|
{:ok, follower, followed, _} <- CommonAPI.follow(follower, followed) do
|
|
|
|
{:ok, _activity} <- ActivityPub.follow(follower, followed) do
|
|
|
|
|
|
|
|
conn
|
|
|
|
conn
|
|
|
|
|> put_view(AccountView)
|
|
|
|
|> put_view(AccountView)
|
|
|
|
|> render("account.json", %{user: followed, for: follower})
|
|
|
|
|> render("account.json", %{user: followed, for: follower})
|
|
|
|