aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2019-01-09 18:14:32 +0100
committerlain <lain@soykaf.club>2019-01-09 18:14:32 +0100
commit7ac152ed38267bde3e318fab82db7d7d610cdbbb (patch)
tree551e14b1c0f6f2d11532d08ff34c9dc2bd2d9955 /lib
parent1881680e28273035333a121e2135781f1ae3f15a (diff)
downloadpleroma-7ac152ed38267bde3e318fab82db7d7d610cdbbb.tar.gz
TwitterAPI: Add follower/following pagination.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex32
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api_controller.ex8
2 files changed, 32 insertions, 8 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 7c2849ce2..f5f5dea1c 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -471,7 +471,7 @@ defmodule Pleroma.User do
end
end
- def get_followers_query(%User{id: id, follower_address: follower_address}) do
+ def get_followers_query(%User{id: id, follower_address: follower_address}, nil) do
from(
u in User,
where: fragment("? <@ ?", ^[follower_address], u.following),
@@ -479,13 +479,23 @@ defmodule Pleroma.User do
)
end
- def get_followers(user) do
- q = get_followers_query(user)
+ def get_followers_query(user, page) do
+ from(
+ u in get_followers_query(user, nil),
+ limit: 20,
+ offset: ^((page - 1) * 20)
+ )
+ end
+
+ def get_followers_query(user), do: get_followers_query(user, nil)
+
+ def get_followers(user, page \\ nil) do
+ q = get_followers_query(user, page)
{:ok, Repo.all(q)}
end
- def get_friends_query(%User{id: id, following: following}) do
+ def get_friends_query(%User{id: id, following: following}, nil) do
from(
u in User,
where: u.follower_address in ^following,
@@ -493,8 +503,18 @@ defmodule Pleroma.User do
)
end
- def get_friends(user) do
- q = get_friends_query(user)
+ def get_friends_query(user, page) do
+ from(
+ u in get_friends_query(user, nil),
+ limit: 20,
+ offset: ^((page - 1) * 20)
+ )
+ end
+
+ def get_friends_query(user), do: get_friends_query(user, nil)
+
+ def get_friends(user, page \\ nil) do
+ q = get_friends_query(user, page)
{:ok, Repo.all(q)}
end
diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex
index 1e04b8c4b..0653acebe 100644
--- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex
@@ -472,8 +472,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
def followers(%{assigns: %{user: for_user}} = conn, params) do
+ page = params["page"] || 1
+
with {:ok, user} <- TwitterAPI.get_user(for_user, params),
- {:ok, followers} <- User.get_followers(user) do
+ {:ok, followers} <- User.get_followers(user, page) do
followers =
cond do
for_user && user.id == for_user.id -> followers
@@ -490,8 +492,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
def friends(%{assigns: %{user: for_user}} = conn, params) do
+ page = params["page"] || 1
+
with {:ok, user} <- TwitterAPI.get_user(conn.assigns[:user], params),
- {:ok, friends} <- User.get_friends(user) do
+ {:ok, friends} <- User.get_friends(user, page) do
friends =
cond do
for_user && user.id == for_user.id -> friends