Fix: Fixing an outbox related bug when local user activity is empty
This commit is contained in:
parent
2813f28b6f
commit
7c722c08f5
|
@ -188,14 +188,24 @@ def render("outbox.json", %{user: user, max_id: max_qid}) do
|
||||||
end
|
end
|
||||||
|
|
||||||
activities = ActivityPub.fetch_user_activities(user, nil, params)
|
activities = ActivityPub.fetch_user_activities(user, nil, params)
|
||||||
min_id = Enum.at(Enum.reverse(activities), 0).id
|
|
||||||
max_id = Enum.at(activities, 0).id
|
|
||||||
|
|
||||||
collection =
|
{max_id, min_id, collection} =
|
||||||
Enum.map(activities, fn act ->
|
if length(activities) > 0 do
|
||||||
{:ok, data} = Transmogrifier.prepare_outgoing(act.data)
|
{
|
||||||
data
|
Enum.at(Enum.reverse(activities), 0).id,
|
||||||
end)
|
Enum.at(activities, 0).id,
|
||||||
|
Enum.map(activities, fn act ->
|
||||||
|
{:ok, data} = Transmogrifier.prepare_outgoing(act.data)
|
||||||
|
data
|
||||||
|
end)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
[]
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
iri = "#{user.ap_id}/outbox"
|
iri = "#{user.ap_id}/outbox"
|
||||||
|
|
||||||
|
|
|
@ -304,6 +304,18 @@ test "it clears `unreachable` federation status of the sender", %{conn: conn} do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "/users/:nickname/outbox" do
|
describe "/users/:nickname/outbox" do
|
||||||
|
test "it will not bomb when there is no activity", %{conn: conn} do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> put_req_header("accept", "application/activity+json")
|
||||||
|
|> get("/users/#{user.nickname}/outbox")
|
||||||
|
|
||||||
|
result = json_response(conn, 200)
|
||||||
|
assert user.ap_id <> "/outbox" == result["id"]
|
||||||
|
end
|
||||||
|
|
||||||
test "it returns a note activity in a collection", %{conn: conn} do
|
test "it returns a note activity in a collection", %{conn: conn} do
|
||||||
note_activity = insert(:note_activity)
|
note_activity = insert(:note_activity)
|
||||||
user = User.get_cached_by_ap_id(note_activity.data["actor"])
|
user = User.get_cached_by_ap_id(note_activity.data["actor"])
|
||||||
|
|
Loading…
Reference in New Issue