Update outbox
This commit is contained in:
parent
f05741edb5
commit
50abfe4748
4 changed files with 103 additions and 10 deletions
|
@ -5,14 +5,51 @@ defmodule NullaWeb.OutboxController do
|
|||
alias Nulla.Models.Note
|
||||
alias Nulla.Models.InstanceSettings
|
||||
|
||||
def show(conn, %{"username" => username}) do
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
domain = instance_settings.domain
|
||||
user = User.get_user_by_username!(username)
|
||||
total = Note.get_total_notes_count(user.id)
|
||||
def show(conn, %{"username" => username} = params) do
|
||||
case Map.get(params, "page") do
|
||||
"true" ->
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
domain = instance_settings.domain
|
||||
user = User.get_user_by_username!(username)
|
||||
max_id = params["max_id"] && String.to_integer(params["max_id"])
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/activity+json")
|
||||
|> send_resp(200, Jason.encode!(ActivityPub.outbox(domain, username, total)))
|
||||
notes =
|
||||
if max_id do
|
||||
Note.get_before_notes(user.id, max_id)
|
||||
else
|
||||
Note.get_latest_notes(user.id)
|
||||
end
|
||||
|
||||
items = Enum.map(notes, &ActivityPub.render_activity(&1, domain))
|
||||
|
||||
next_max_id =
|
||||
case List.last(notes) do
|
||||
nil -> 0
|
||||
last -> last.id
|
||||
end
|
||||
|
||||
min_id =
|
||||
case List.first(notes) do
|
||||
nil -> 0
|
||||
first -> first.id
|
||||
end
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/activity+json")
|
||||
|> send_resp(
|
||||
200,
|
||||
Jason.encode!(ActivityPub.outbox(domain, username, next_max_id, min_id || 0, items))
|
||||
)
|
||||
|
||||
_ ->
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
domain = instance_settings.domain
|
||||
user = User.get_user_by_username!(username)
|
||||
total = Note.get_total_notes_count(user.id)
|
||||
|
||||
conn
|
||||
|> put_resp_content_type("application/activity+json")
|
||||
|> send_resp(200, Jason.encode!(ActivityPub.outbox(domain, username, total)))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue