Browse Source

Fix DM visibility for blocking users

tags/v1.1.4
eugenijm 5 years ago
parent
commit
86e4b48a5e
4 changed files with 72 additions and 16 deletions
  1. +9
    -6
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
  2. +9
    -6
      lib/pleroma/web/twitter_api/twitter_api_controller.ex
  3. +27
    -0
      test/web/mastodon_api/mastodon_api_controller_test.exs
  4. +27
    -4
      test/web/twitter_api/twitter_api_controller_test.exs

+ 9
- 6
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex View File

@@ -292,13 +292,16 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end

def dm_timeline(%{assigns: %{user: user}} = conn, params) do
query =
ActivityPub.fetch_activities_query(
[user.ap_id],
Map.merge(params, %{"type" => "Create", visibility: "direct"})
)
params =
params
|> Map.put("type", "Create")
|> 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
|> add_link_headers(:dm_timeline, activities)


+ 9
- 6
lib/pleroma/web/twitter_api/twitter_api_controller.ex View File

@@ -177,13 +177,16 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end

def dm_timeline(%{assigns: %{user: user}} = conn, params) do
query =
ActivityPub.fetch_activities_query(
[user.ap_id],
Map.merge(params, %{"type" => "Create", "user" => user, visibility: "direct"})
)
params =
params
|> Map.put("type", "Create")
|> 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
|> put_view(ActivityView)


+ 27
- 0
test/web/mastodon_api/mastodon_api_controller_test.exs View File

@@ -248,6 +248,33 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert status["url"] != direct.data["id"]
end

test "doesn't include DMs from blocked users", %{conn: conn} do
blocker = insert(:user)
blocked = insert(:user)
user = insert(:user)
{:ok, blocker} = User.block(blocker, blocked)

{:ok, _blocked_direct} =
CommonAPI.post(blocked, %{
"status" => "Hi @#{blocker.nickname}!",
"visibility" => "direct"
})

{:ok, direct} =
CommonAPI.post(user, %{
"status" => "Hi @#{blocker.nickname}!",
"visibility" => "direct"
})

res_conn =
conn
|> assign(:user, user)
|> get("api/v1/timelines/direct")

[status] = json_response(res_conn, 200)
assert status["id"] == direct.id
end

test "replying to a status", %{conn: conn} do
user = insert(:user)



+ 27
- 4
test/web/twitter_api/twitter_api_controller_test.exs View File

@@ -415,6 +415,33 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
assert status["id"] == direct_two.id
assert status_two["id"] == direct.id
end

test "doesn't include DMs from blocked users", %{conn: conn} do
blocker = insert(:user)
blocked = insert(:user)
user = insert(:user)
{:ok, blocker} = User.block(blocker, blocked)

{:ok, _blocked_direct} =
CommonAPI.post(blocked, %{
"status" => "Hi @#{blocker.nickname}!",
"visibility" => "direct"
})

{:ok, direct} =
CommonAPI.post(user, %{
"status" => "Hi @#{blocker.nickname}!",
"visibility" => "direct"
})

res_conn =
conn
|> assign(:user, blocker)
|> get("/api/statuses/dm_timeline.json")

[status] = json_response(res_conn, 200)
assert status["id"] == direct.id
end
end

describe "GET /statuses/mentions.json" do
@@ -1762,8 +1789,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|> assign(:user, user)
|> post("/api/pleroma/friendships/approve", %{"user_id" => other_user.id})

user = Repo.get(User, user.id)

assert relationship = json_response(conn, 200)
assert other_user.id == relationship["id"]
assert relationship["follows_you"] == true
@@ -1787,8 +1812,6 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|> assign(:user, user)
|> post("/api/pleroma/friendships/deny", %{"user_id" => other_user.id})

user = Repo.get(User, user.id)

assert relationship = json_response(conn, 200)
assert other_user.id == relationship["id"]
assert relationship["follows_you"] == false


Loading…
Cancel
Save