Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
bbd0049f
Commit
bbd0049f
authored
Feb 09, 2019
by
lain
Browse files
Respect blocks in mass follow.
parent
c5f8df08
Pipeline
#7316
passed with stages
in 6 minutes and 28 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
bbd0049f
...
...
@@ -96,12 +96,6 @@ def ap_followers(%User{} = user) do
"
#{
ap_id
(
user
)
}
/followers"
end
def
follow_changeset
(
struct
,
params
\\
%{})
do
struct
|>
cast
(
params
,
[
:following
])
|>
validate_required
([
:following
])
end
def
user_info
(%
User
{}
=
user
)
do
oneself
=
if
user
.
local
,
do
:
1
,
else
:
0
...
...
@@ -307,10 +301,13 @@ def maybe_follow(%User{} = follower, %User{info: _info} = followed) do
end
end
@doc
"A mass follow for local users.
Ignore
s blocks
and has no side effects
"
@doc
"A mass follow for local users.
Respect
s blocks
but does not create activities.
"
@spec
follow_all
(
User
.
t
(),
list
(
User
.
t
()))
::
{
atom
(),
User
.
t
()}
def
follow_all
(
follower
,
followeds
)
do
followed_addresses
=
Enum
.
map
(
followeds
,
fn
%{
follower_address:
fa
}
->
fa
end
)
followed_addresses
=
followeds
|>
Enum
.
reject
(
fn
%{
ap_id:
ap_id
}
->
ap_id
in
follower
.
info
.
blocks
end
)
|>
Enum
.
map
(
fn
%{
follower_address:
fa
}
->
fa
end
)
q
=
from
(
u
in
User
,
...
...
test/user_test.exs
View file @
bbd0049f
...
...
@@ -53,16 +53,20 @@ test "follow_all follows mutliple users" do
followed_zero
=
insert
(
:user
)
followed_one
=
insert
(
:user
)
followed_two
=
insert
(
:user
)
blocked
=
insert
(
:user
)
not_followed
=
insert
(
:user
)
{
:ok
,
user
}
=
User
.
block
(
user
,
blocked
)
{
:ok
,
user
}
=
User
.
follow
(
user
,
followed_zero
)
{
:ok
,
user
}
=
User
.
follow_all
(
user
,
[
followed_one
,
followed_two
])
{
:ok
,
user
}
=
User
.
follow_all
(
user
,
[
followed_one
,
followed_two
,
blocked
])
assert
User
.
following?
(
user
,
followed_one
)
assert
User
.
following?
(
user
,
followed_two
)
assert
User
.
following?
(
user
,
followed_zero
)
refute
User
.
following?
(
user
,
not_followed
)
refute
User
.
following?
(
user
,
blocked
)
end
test
"follow_all follows mutliple users without duplicating"
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment