ソースを参照

Hide blocked users from interactions

tags/v1.1.4
Sadposter kaniini 5年前
コミット
a5d6287ba8
2個のファイルの変更44行の追加2行の削除
  1. +8
    -2
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
  2. +36
    -0
      test/web/mastodon_api/mastodon_api_controller_test.exs

+ 8
- 2
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex ファイルの表示

@@ -883,7 +883,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
with %Activity{data: %{"object" => object}} <- Activity.get_by_id(id),
%Object{data: %{"likes" => likes}} <- Object.normalize(object) do
q = from(u in User, where: u.ap_id in ^likes)
users = Repo.all(q)

users =
Repo.all(q)
|> Enum.filter(&(not User.blocks?(user, &1)))

conn
|> put_view(AccountView)
@@ -897,7 +900,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
with %Activity{data: %{"object" => object}} <- Activity.get_by_id(id),
%Object{data: %{"announcements" => announces}} <- Object.normalize(object) do
q = from(u in User, where: u.ap_id in ^announces)
users = Repo.all(q)

users =
Repo.all(q)
|> Enum.filter(&(not User.blocks?(user, &1)))

conn
|> put_view(AccountView)


+ 36
- 0
test/web/mastodon_api/mastodon_api_controller_test.exs ファイルの表示

@@ -3768,6 +3768,24 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do

assert Enum.empty?(response)
end

test "does not return users who have favorited the status but are blocked", %{
conn: %{assigns: %{user: user}} = conn,
activity: activity
} do
other_user = insert(:user)
{:ok, user} = User.block(user, other_user)

{:ok, _, _} = CommonAPI.favorite(activity.id, other_user)

response =
conn
|> assign(:user, user)
|> get("/api/v1/statuses/#{activity.id}/favourited_by")
|> json_response(:ok)

assert Enum.empty?(response)
end
end

describe "GET /api/v1/statuses/:id/reblogged_by" do
@@ -3807,6 +3825,24 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do

assert Enum.empty?(response)
end

test "does not return users who have reblogged the status but are blocked", %{
conn: %{assigns: %{user: user}} = conn,
activity: activity
} do
other_user = insert(:user)
{:ok, user} = User.block(user, other_user)

{:ok, _, _} = CommonAPI.repeat(activity.id, other_user)

response =
conn
|> assign(:user, user)
|> get("/api/v1/statuses/#{activity.id}/reblogged_by")
|> json_response(:ok)

assert Enum.empty?(response)
end
end

describe "POST /auth/password, with valid parameters" do


読み込み中…
キャンセル
保存