forked from AkkomaGang/akkoma
fixed unfollow for relay actor
This commit is contained in:
parent
f740d786a3
commit
64bfb41c55
4 changed files with 48 additions and 1 deletions
|
@ -104,6 +104,13 @@ def activity(conn, %{"uuid" => uuid}) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# GET /relay/following
|
||||||
|
def following(%{assigns: %{relay: true}} = conn, _params) do
|
||||||
|
conn
|
||||||
|
|> put_resp_header("content-type", "application/activity+json")
|
||||||
|
|> json(UserView.render("following.json", %{user: Relay.get_actor()}))
|
||||||
|
end
|
||||||
|
|
||||||
def following(%{assigns: %{user: for_user}} = conn, %{"nickname" => nickname, "page" => page}) do
|
def following(%{assigns: %{user: for_user}} = conn, %{"nickname" => nickname, "page" => page}) do
|
||||||
with %User{} = user <- User.get_cached_by_nickname(nickname),
|
with %User{} = user <- User.get_cached_by_nickname(nickname),
|
||||||
{user, for_user} <- ensure_user_keys_present_and_maybe_refresh_for_user(user, for_user),
|
{user, for_user} <- ensure_user_keys_present_and_maybe_refresh_for_user(user, for_user),
|
||||||
|
@ -131,6 +138,13 @@ def following(%{assigns: %{user: for_user}} = conn, %{"nickname" => nickname}) d
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# GET /relay/followers
|
||||||
|
def followers(%{assigns: %{relay: true}} = conn, _params) do
|
||||||
|
conn
|
||||||
|
|> put_resp_header("content-type", "application/activity+json")
|
||||||
|
|> json(UserView.render("followers.json", %{user: Relay.get_actor()}))
|
||||||
|
end
|
||||||
|
|
||||||
def followers(%{assigns: %{user: for_user}} = conn, %{"nickname" => nickname, "page" => page}) do
|
def followers(%{assigns: %{user: for_user}} = conn, %{"nickname" => nickname, "page" => page}) do
|
||||||
with %User{} = user <- User.get_cached_by_nickname(nickname),
|
with %User{} = user <- User.get_cached_by_nickname(nickname),
|
||||||
{user, for_user} <- ensure_user_keys_present_and_maybe_refresh_for_user(user, for_user),
|
{user, for_user} <- ensure_user_keys_present_and_maybe_refresh_for_user(user, for_user),
|
||||||
|
|
|
@ -36,7 +36,8 @@ def follow(target_instance) do
|
||||||
def unfollow(target_instance) do
|
def unfollow(target_instance) do
|
||||||
with %User{} = local_user <- get_actor(),
|
with %User{} = local_user <- get_actor(),
|
||||||
{:ok, %User{} = target_user} <- User.get_or_fetch_by_ap_id(target_instance),
|
{:ok, %User{} = target_user} <- User.get_or_fetch_by_ap_id(target_instance),
|
||||||
{:ok, activity} <- ActivityPub.unfollow(local_user, target_user) do
|
{:ok, activity} <- ActivityPub.unfollow(local_user, target_user),
|
||||||
|
{:ok, _, _} <- User.unfollow(local_user, target_user) do
|
||||||
Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}")
|
Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}")
|
||||||
{:ok, activity}
|
{:ok, activity}
|
||||||
else
|
else
|
||||||
|
|
|
@ -687,6 +687,9 @@ defmodule Pleroma.Web.Router do
|
||||||
|
|
||||||
get("/", ActivityPubController, :relay)
|
get("/", ActivityPubController, :relay)
|
||||||
post("/inbox", ActivityPubController, :inbox)
|
post("/inbox", ActivityPubController, :inbox)
|
||||||
|
|
||||||
|
get("/following", ActivityPubController, :following, assigns: %{relay: true})
|
||||||
|
get("/followers", ActivityPubController, :followers, assigns: %{relay: true})
|
||||||
end
|
end
|
||||||
|
|
||||||
scope "/internal/fetch", Pleroma.Web.ActivityPub do
|
scope "/internal/fetch", Pleroma.Web.ActivityPub do
|
||||||
|
|
|
@ -12,6 +12,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
|
||||||
alias Pleroma.Web.ActivityPub.ObjectView
|
alias Pleroma.Web.ActivityPub.ObjectView
|
||||||
alias Pleroma.Web.ActivityPub.UserView
|
alias Pleroma.Web.ActivityPub.UserView
|
||||||
alias Pleroma.Web.ActivityPub.Utils
|
alias Pleroma.Web.ActivityPub.Utils
|
||||||
|
alias Pleroma.Web.ActivityPub.Relay
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
|
||||||
setup_all do
|
setup_all do
|
||||||
|
@ -593,6 +594,34 @@ test "it increases like count when receiving a like action", %{conn: conn} do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "/relay/followers" do
|
||||||
|
test "it returns relay followers", %{conn: conn} do
|
||||||
|
relay_actor = Relay.get_actor()
|
||||||
|
user = insert(:user)
|
||||||
|
User.follow(user, relay_actor)
|
||||||
|
|
||||||
|
result =
|
||||||
|
conn
|
||||||
|
|> assign(:relay, true)
|
||||||
|
|> get("/relay/followers")
|
||||||
|
|> json_response(200)
|
||||||
|
|
||||||
|
assert result["first"]["orderedItems"] == [user.ap_id]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "/relay/following" do
|
||||||
|
test "it returns relay following", %{conn: conn} do
|
||||||
|
result =
|
||||||
|
conn
|
||||||
|
|> assign(:relay, true)
|
||||||
|
|> get("/relay/following")
|
||||||
|
|> json_response(200)
|
||||||
|
|
||||||
|
assert result["first"]["orderedItems"] == []
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "/users/:nickname/followers" do
|
describe "/users/:nickname/followers" do
|
||||||
test "it returns the followers in a collection", %{conn: conn} do
|
test "it returns the followers in a collection", %{conn: conn} do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
Loading…
Reference in a new issue