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

@ -18,8 +18,7 @@ use ruma::{
api::federation::discovery::ServerSigningKeys,
events::{
push_rules::PushRulesEventContent,
room::message::RoomMessageEventContent, AnyGlobalAccountDataEvent,
GlobalAccountDataEvent, GlobalAccountDataEventType,
room::message::RoomMessageEventContent, GlobalAccountDataEventType,
},
push::Ruleset,
serde::{Base64, Raw},
@ -495,13 +494,13 @@ impl Service {
services().account_data.update_global(
admin_bot,
&GlobalAccountDataEventType::PushRules,
&Raw::new(&GlobalAccountDataEvent {
content: PushRulesEventContent {
&Raw::new(
&PushRulesEventContent {
global: ruleset,
},
})
.expect("json serialization should always succeed")
.cast::<AnyGlobalAccountDataEvent>(),
}
.into(),
)
.expect("json serialization should always succeed"),
)?;
res