Add following and followers
This commit is contained in:
parent
f8bedff913
commit
0b88881934
8 changed files with 261 additions and 4 deletions
65
lib/nulla_web/controllers/follow_controller.ex
Normal file
65
lib/nulla_web/controllers/follow_controller.ex
Normal file
|
@ -0,0 +1,65 @@
|
|||
defmodule NullaWeb.FollowController do
|
||||
use NullaWeb, :controller
|
||||
alias Nulla.Models.User
|
||||
alias Nulla.Models.InstanceSettings
|
||||
alias Nulla.ActivityPub
|
||||
alias Nulla.Utils
|
||||
|
||||
def following(conn, %{"username" => username, "page" => page_param}) do
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
domain = instance_settings.domain
|
||||
offset = instance_settings.offset
|
||||
user = User.get_user_by_username!(username)
|
||||
total = Utils.count_following_by_username!(user.username)
|
||||
page =
|
||||
case Integer.parse(page_param) do
|
||||
{int, _} when int > 0 -> int
|
||||
_ -> 1
|
||||
end
|
||||
following_list = Utils.get_following_users_by_username!(user.username, page)
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/activity+json")
|
||||
|> json(ActivityPub.following(domain, user, total, following_list, page, offset))
|
||||
end
|
||||
|
||||
def following(conn, %{"username" => username}) do
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
domain = instance_settings.domain
|
||||
user = User.get_user_by_username!(username)
|
||||
total = Utils.count_following_by_username!(user.username)
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/activity+json")
|
||||
|> json(ActivityPub.following(domain, user, total))
|
||||
end
|
||||
|
||||
def followers(conn, %{"username" => username, "page" => page_param}) do
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
domain = instance_settings.domain
|
||||
offset = instance_settings.offset
|
||||
user = User.get_user_by_username!(username)
|
||||
total = Utils.count_followers_by_username!(user.username)
|
||||
page =
|
||||
case Integer.parse(page_param) do
|
||||
{int, _} when int > 0 -> int
|
||||
_ -> 1
|
||||
end
|
||||
followers_list = Utils.get_followers_by_username!(user.username, page)
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/activity+json")
|
||||
|> json(ActivityPub.followers(domain, user, total, followers_list, page, offset))
|
||||
end
|
||||
|
||||
def followers(conn, %{"username" => username}) do
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
domain = instance_settings.domain
|
||||
user = User.get_user_by_username!(username)
|
||||
total = Utils.count_followers_by_username!(user.username)
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/activity+json")
|
||||
|> json(ActivityPub.followers(domain, user, total))
|
||||
end
|
||||
end
|
|
@ -4,6 +4,7 @@ defmodule NullaWeb.UserController do
|
|||
alias Nulla.Models.Note
|
||||
alias Nulla.Models.InstanceSettings
|
||||
alias Nulla.ActivityPub
|
||||
alias Nulla.Utils
|
||||
|
||||
def show(conn, %{"username" => username}) do
|
||||
accept = List.first(get_req_header(conn, "accept"))
|
||||
|
@ -17,7 +18,19 @@ defmodule NullaWeb.UserController do
|
|||
|> put_resp_content_type("application/activity+json")
|
||||
|> json(ActivityPub.user(domain, user))
|
||||
else
|
||||
render(conn, :show, domain: domain, user: user, notes: notes, layout: false)
|
||||
following = Utils.count_following_by_username!(user.username)
|
||||
followers = Utils.count_followers_by_username!(user.username)
|
||||
|
||||
render(
|
||||
conn,
|
||||
:show,
|
||||
domain: domain,
|
||||
user: user,
|
||||
notes: notes,
|
||||
following: following,
|
||||
followers: followers,
|
||||
layout: false
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue