refactor: Promote handling unsigned data out of timeline

Also fixes:
- Transaction IDs leaking in event route
- Age not being set for event relations or threads
- Both of the above for search results

Notes down concern with relations table
This commit is contained in:
Jade Ellis
2025-06-03 21:31:02 +01:00
parent 7fa4fa9862
commit 987c5eeb03
18 changed files with 111 additions and 75 deletions
+1 -1
View File
@@ -33,7 +33,7 @@ pub(crate) async fn get_room_event_route(
return Err!(Request(Forbidden("You don't have permission to view this event.")));
}
event.add_age().ok();
event.set_unsigned(body.sender_user.as_deref());
Ok(get_room_event::v3::Response { event: event.into_format() })
}
+8 -1
View File
@@ -40,12 +40,19 @@ pub(crate) async fn room_initial_sync_route(
.map_ok(Event::into_format)
.try_collect::<Vec<_>>();
// Events are returned in body
let limit = LIMIT_MAX;
let events = services
.rooms
.timeline
.pdus_rev(None, room_id, None)
.pdus_rev(room_id, None)
.try_take(limit)
.and_then(async |mut pdu| {
pdu.1.set_unsigned(body.sender_user.as_deref());
// TODO: bundled aggregations
Ok(pdu)
})
.try_collect::<Vec<_>>();
let (membership, visibility, state, events) =