use event content in account_data service api instead of full events

This eliminates the possibility of passing an event that has a
mismatching type, reducing the space of possible invalid states.
This commit is contained in:
Olivia Lee 2025-03-23 14:45:33 -07:00
parent 66210bc32d
commit b82458a460
No known key found for this signature in database
GPG key ID: 54D568A15B9CD1F9
15 changed files with 277 additions and 240 deletions

View file

@ -25,7 +25,8 @@ use tracing::{debug, error};
use super::{load_timeline, share_encrypted_room};
use crate::{
service::rooms::timeline::PduCount, services, Ar, Error, Ra, Result,
service::{account_data, rooms::timeline::PduCount},
services, Ar, Error, Ra, Result,
};
#[allow(clippy::too_many_lines)]
@ -645,7 +646,13 @@ pub(crate) async fn sync_events_v4_route(
services()
.account_data
.global_changes_since(&sender_user, globalsince)?
.into_values()
.into_iter()
.map(|(event_type, content)| {
account_data::raw_global_event_from_parts(
&event_type,
&content,
)
})
.collect()
} else {
Vec::new()