Fix: Fixing an outbox related bug when local user activity is empty See merge request pleroma/pleroma!849tags/v1.1.4
@@ -188,14 +188,24 @@ defmodule Pleroma.Web.ActivityPub.UserView 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 = | |||||
Enum.map(activities, fn act -> | |||||
{:ok, data} = Transmogrifier.prepare_outgoing(act.data) | |||||
data | |||||
end) | |||||
{max_id, min_id, collection} = | |||||
if length(activities) > 0 do | |||||
{ | |||||
Enum.at(Enum.reverse(activities), 0).id, | |||||
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 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest 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"]) | ||||