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
1a1f4520
Commit
1a1f4520
authored
Mar 02, 2019
by
Eugenij
Browse files
Use sql query in User.get_follow_requests/1 for filtering logic
parent
f38c316e
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
1a1f4520
...
@@ -648,15 +648,14 @@ def update_follow_request_count(%User{} = user) do
...
@@ -648,15 +648,14 @@ def update_follow_request_count(%User{} = user) do
end
end
def
get_follow_requests
(%
User
{}
=
user
)
do
def
get_follow_requests
(%
User
{}
=
user
)
do
q
=
get_follow_requests_query
(
user
)
reqs
=
Repo
.
all
(
q
)
users
=
users
=
Enum
.
map
(
reqs
,
fn
req
->
req
.
actor
end
)
user
|>
Enum
.
uniq
()
|>
User
.
get_follow_requests_query
()
|>
Enum
.
map
(
fn
ap_id
->
get_by_ap_id
(
ap_id
)
end
)
|>
join
(
:inner
,
[
a
],
u
in
User
,
a
.
actor
==
u
.
ap_id
)
|>
Enum
.
filter
(
fn
u
->
!is_nil
(
u
)
end
)
|>
where
([
a
,
u
],
not
fragment
(
"? @> ?"
,
u
.
following
,
^
[
user
.
follower_address
]))
|>
Enum
.
filter
(
fn
u
->
!following?
(
u
,
user
)
end
)
|>
group_by
([
a
,
u
],
u
.
id
)
|>
select
([
a
,
u
],
u
)
|>
Repo
.
all
()
{
:ok
,
users
}
{
:ok
,
users
}
end
end
...
...
test/user_test.exs
View file @
1a1f4520
...
@@ -64,6 +64,20 @@ test "returns all pending follow requests" do
...
@@ -64,6 +64,20 @@ test "returns all pending follow requests" do
assert
activity
assert
activity
end
end
test
"doesn't return already accepted or duplicate follow requests"
do
locked
=
insert
(
:user
,
%{
info:
%{
locked:
true
}})
pending_follower
=
insert
(
:user
)
accepted_follower
=
insert
(
:user
)
Pleroma
.
Web
.
TwitterAPI
.
TwitterAPI
.
follow
(
pending_follower
,
%{
"user_id"
=>
locked
.
id
})
Pleroma
.
Web
.
TwitterAPI
.
TwitterAPI
.
follow
(
pending_follower
,
%{
"user_id"
=>
locked
.
id
})
Pleroma
.
Web
.
TwitterAPI
.
TwitterAPI
.
follow
(
accepted_follower
,
%{
"user_id"
=>
locked
.
id
})
User
.
maybe_follow
(
accepted_follower
,
locked
)
assert
{
:ok
,
[
activity
]}
=
User
.
get_follow_requests
(
locked
)
assert
activity
end
test
"follow_all follows mutliple users"
do
test
"follow_all follows mutliple users"
do
user
=
insert
(
:user
)
user
=
insert
(
:user
)
followed_zero
=
insert
(
:user
)
followed_zero
=
insert
(
:user
)
...
...
Write
Preview
Supports
Markdown
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