Ver código fonte

User: Don't unfollow on block when the relevant setting is set.

merge-requests/2720/head
lain 4 anos atrás
pai
commit
15a8b70318
4 arquivos alterados com 18 adições e 20 exclusões
  1. +2
    -1
      lib/pleroma/user.ex
  2. +0
    -13
      lib/pleroma/web/activity_pub/object_validators/block_validator.ex
  3. +0
    -6
      test/web/activity_pub/object_validator_test.exs
  4. +16
    -0
      test/web/activity_pub/side_effects_test.exs

+ 2
- 1
lib/pleroma/user.ex Ver arquivo

@@ -1309,7 +1309,8 @@ defmodule Pleroma.User do


unsubscribe(blocked, blocker) unsubscribe(blocked, blocker)


if following?(blocked, blocker), do: unfollow(blocked, blocker)
unfollowing_blocked = Config.get([:activitypub, :unfollow_blocked], true)
if unfollowing_blocked && following?(blocked, blocker), do: unfollow(blocked, blocker)


{:ok, blocker} = update_follower_count(blocker) {:ok, blocker} = update_follower_count(blocker)
{:ok, blocker, _} = Participation.mark_all_as_read(blocker, blocked) {:ok, blocker, _} = Participation.mark_all_as_read(blocker, blocked)


+ 0
- 13
lib/pleroma/web/activity_pub/object_validators/block_validator.ex Ver arquivo

@@ -6,7 +6,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
use Ecto.Schema use Ecto.Schema


alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.EctoType.ActivityPub.ObjectValidators
alias Pleroma.User


import Ecto.Changeset import Ecto.Changeset
import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations
@@ -33,7 +32,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
|> validate_inclusion(:type, ["Block"]) |> validate_inclusion(:type, ["Block"])
|> validate_actor_presence() |> validate_actor_presence()
|> validate_actor_presence(field_name: :object) |> validate_actor_presence(field_name: :object)
|> validate_block_acceptance()
end end


def cast_and_validate(data) do def cast_and_validate(data) do
@@ -41,15 +39,4 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
|> cast_data |> cast_data
|> validate_data |> validate_data
end end

def validate_block_acceptance(cng) do
actor = get_field(cng, :actor) |> User.get_cached_by_ap_id()

if actor.local || Pleroma.Config.get([:activitypub, :unfollow_blocked], true) do
cng
else
cng
|> add_error(:actor, "Not accepting remote blocks")
end
end
end end

+ 0
- 6
test/web/activity_pub/object_validator_test.exs Ver arquivo

@@ -680,11 +680,5 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidatorTest do


assert {:error, _cng} = ObjectValidator.validate(block, []) assert {:error, _cng} = ObjectValidator.validate(block, [])
end end

test "returns an error if don't accept remote blocks", %{valid_block: valid_block} do
clear_config([:activitypub, :unfollow_blocked], false)

assert {:error, _cng} = ObjectValidator.validate(valid_block, [])
end
end end
end end

+ 16
- 0
test/web/activity_pub/side_effects_test.exs Ver arquivo

@@ -87,6 +87,22 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
refute User.following?(blocked, user) refute User.following?(blocked, user)
assert User.blocks?(user, blocked) assert User.blocks?(user, blocked)
end end

test "it blocks but does not unfollow if the relevant setting is set", %{
user: user,
blocked: blocked,
block: block
} do
clear_config([:activitypub, :unfollow_blocked], false)
assert User.following?(user, blocked)
assert User.following?(blocked, user)

{:ok, _, _} = SideEffects.handle(block)

refute User.following?(user, blocked)
assert User.following?(blocked, user)
assert User.blocks?(user, blocked)
end
end end


describe "update users" do describe "update users" do


Carregando…
Cancelar
Salvar