@@ -27,6 +27,42 @@ defmodule Pleroma.Web.CommonAPI do | |||||
end | end | ||||
end | end | ||||
def unfollow(follower, unfollowed) do | |||||
with {:ok, follower, _follow_activity} <- User.unfollow(follower, unfollowed), | |||||
{:ok, _activity} <- ActivityPub.unfollow(follower, unfollowed) do | |||||
{:ok, follower} | |||||
end | |||||
end | |||||
def accept_follow_request(follower, followed) do | |||||
with {:ok, follower} <- User.maybe_follow(follower, followed), | |||||
%Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), | |||||
{:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "accept"), | |||||
{:ok, _activity} <- | |||||
ActivityPub.accept(%{ | |||||
to: [follower.ap_id], | |||||
actor: followed, | |||||
object: follow_activity.data["id"], | |||||
type: "Accept" | |||||
}) do | |||||
{:ok, follower} | |||||
end | |||||
end | |||||
def reject_follow_request(follower, followed) do | |||||
with %Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), | |||||
{:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "reject"), | |||||
{:ok, _activity} <- | |||||
ActivityPub.reject(%{ | |||||
to: [follower.ap_id], | |||||
actor: followed, | |||||
object: follow_activity.data["id"], | |||||
type: "Reject" | |||||
}) do | |||||
{:ok, follower} | |||||
end | |||||
end | |||||
def delete(activity_id, user) do | def delete(activity_id, user) do | ||||
with %Activity{data: %{"object" => %{"id" => object_id}}} <- Repo.get(Activity, activity_id), | with %Activity{data: %{"object" => %{"id" => object_id}}} <- Repo.get(Activity, activity_id), | ||||
%Object{} = object <- Object.normalize(object_id), | %Object{} = object <- Object.normalize(object_id), | ||||
@@ -15,7 +15,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do | |||||
alias Pleroma.User | alias Pleroma.User | ||||
alias Pleroma.Web | alias Pleroma.Web | ||||
alias Pleroma.Web.ActivityPub.ActivityPub | alias Pleroma.Web.ActivityPub.ActivityPub | ||||
alias Pleroma.Web.ActivityPub.Utils | |||||
alias Pleroma.Web.ActivityPub.Visibility | alias Pleroma.Web.ActivityPub.Visibility | ||||
alias Pleroma.Web.CommonAPI | alias Pleroma.Web.CommonAPI | ||||
alias Pleroma.Web.MastodonAPI.AccountView | alias Pleroma.Web.MastodonAPI.AccountView | ||||
@@ -697,16 +696,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do | |||||
def authorize_follow_request(%{assigns: %{user: followed}} = conn, %{"id" => id}) do | def authorize_follow_request(%{assigns: %{user: followed}} = conn, %{"id" => id}) do | ||||
with %User{} = follower <- Repo.get(User, id), | with %User{} = follower <- Repo.get(User, id), | ||||
{:ok, follower} <- User.maybe_follow(follower, followed), | |||||
%Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), | |||||
{:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "accept"), | |||||
{:ok, _activity} <- | |||||
ActivityPub.accept(%{ | |||||
to: [follower.ap_id], | |||||
actor: followed, | |||||
object: follow_activity.data["id"], | |||||
type: "Accept" | |||||
}) do | |||||
{:ok, follower} <- CommonAPI.accept_follow_request(follower, followed) do | |||||
conn | conn | ||||
|> put_view(AccountView) | |> put_view(AccountView) | ||||
|> render("relationship.json", %{user: followed, target: follower}) | |> render("relationship.json", %{user: followed, target: follower}) | ||||
@@ -720,15 +710,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do | |||||
def reject_follow_request(%{assigns: %{user: followed}} = conn, %{"id" => id}) do | def reject_follow_request(%{assigns: %{user: followed}} = conn, %{"id" => id}) do | ||||
with %User{} = follower <- Repo.get(User, id), | with %User{} = follower <- Repo.get(User, id), | ||||
%Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), | |||||
{:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "reject"), | |||||
{:ok, _activity} <- | |||||
ActivityPub.reject(%{ | |||||
to: [follower.ap_id], | |||||
actor: followed, | |||||
object: follow_activity.data["id"], | |||||
type: "Reject" | |||||
}) do | |||||
{:ok, follower} <- CommonAPI.reject_follow_request(follower, followed) do | |||||
conn | conn | ||||
|> put_view(AccountView) | |> put_view(AccountView) | ||||
|> render("relationship.json", %{user: followed, target: follower}) | |> render("relationship.json", %{user: followed, target: follower}) | ||||
@@ -770,8 +752,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do | |||||
def unfollow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do | def unfollow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do | ||||
with %User{} = followed <- Repo.get(User, id), | with %User{} = followed <- Repo.get(User, id), | ||||
{:ok, _activity} <- ActivityPub.unfollow(follower, followed), | |||||
{:ok, follower, _} <- User.unfollow(follower, followed) do | |||||
{:ok, follower} <- CommonAPI.unfollow(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}) | ||||
@@ -35,11 +35,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do | |||||
def unfollow(%User{} = follower, params) do | def unfollow(%User{} = follower, params) do | ||||
with {:ok, %User{} = unfollowed} <- get_user(params), | with {:ok, %User{} = unfollowed} <- get_user(params), | ||||
{:ok, follower, _follow_activity} <- User.unfollow(follower, unfollowed), | |||||
{:ok, _activity} <- ActivityPub.unfollow(follower, unfollowed) do | |||||
{:ok, follower} <- CommonAPI.unfollow(follower, unfollowed) do | |||||
{:ok, follower, unfollowed} | {:ok, follower, unfollowed} | ||||
else | |||||
err -> err | |||||
end | end | ||||
end | end | ||||
@@ -14,7 +14,6 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||||
alias Pleroma.Repo | alias Pleroma.Repo | ||||
alias Pleroma.User | alias Pleroma.User | ||||
alias Pleroma.Web.ActivityPub.ActivityPub | alias Pleroma.Web.ActivityPub.ActivityPub | ||||
alias Pleroma.Web.ActivityPub.Utils | |||||
alias Pleroma.Web.ActivityPub.Visibility | alias Pleroma.Web.ActivityPub.Visibility | ||||
alias Pleroma.Web.CommonAPI | alias Pleroma.Web.CommonAPI | ||||
alias Pleroma.Web.OAuth.Token | alias Pleroma.Web.OAuth.Token | ||||
@@ -588,16 +587,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||||
def approve_friend_request(conn, %{"user_id" => uid} = _params) do | def approve_friend_request(conn, %{"user_id" => uid} = _params) do | ||||
with followed <- conn.assigns[:user], | with followed <- conn.assigns[:user], | ||||
%User{} = follower <- Repo.get(User, uid), | %User{} = follower <- Repo.get(User, uid), | ||||
{:ok, follower} <- User.maybe_follow(follower, followed), | |||||
%Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), | |||||
{:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "accept"), | |||||
{:ok, _activity} <- | |||||
ActivityPub.accept(%{ | |||||
to: [follower.ap_id], | |||||
actor: followed, | |||||
object: follow_activity.data["id"], | |||||
type: "Accept" | |||||
}) do | |||||
{:ok, follower} <- CommonAPI.accept_follow_request(follower, followed) do | |||||
conn | conn | ||||
|> put_view(UserView) | |> put_view(UserView) | ||||
|> render("show.json", %{user: follower, for: followed}) | |> render("show.json", %{user: follower, for: followed}) | ||||
@@ -609,15 +599,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do | |||||
def deny_friend_request(conn, %{"user_id" => uid} = _params) do | def deny_friend_request(conn, %{"user_id" => uid} = _params) do | ||||
with followed <- conn.assigns[:user], | with followed <- conn.assigns[:user], | ||||
%User{} = follower <- Repo.get(User, uid), | %User{} = follower <- Repo.get(User, uid), | ||||
%Activity{} = follow_activity <- Utils.fetch_latest_follow(follower, followed), | |||||
{:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "reject"), | |||||
{:ok, _activity} <- | |||||
ActivityPub.reject(%{ | |||||
to: [follower.ap_id], | |||||
actor: followed, | |||||
object: follow_activity.data["id"], | |||||
type: "Reject" | |||||
}) do | |||||
{:ok, follower} <- CommonAPI.reject_follow_request(follower, followed) do | |||||
conn | conn | ||||
|> put_view(UserView) | |> put_view(UserView) | ||||
|> render("show.json", %{user: follower, for: followed}) | |> render("show.json", %{user: follower, for: followed}) | ||||