Update outbox

This commit is contained in:
Mirai Kumiko 2025-06-15 08:59:03 +02:00
parent f05741edb5
commit 50abfe4748
Signed by: miraikumiko
GPG key ID: 3F178B1B5E0CB278
4 changed files with 103 additions and 10 deletions

View file

@ -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