fix service/rooms/state_cache events

This commit is contained in:
Charles Hall 2024-07-15 21:06:27 -07:00
parent 592e42ba7d
commit 4b5d127368
No known key found for this signature in database
GPG key ID: 7B8E0645816E07CF

View file

@ -91,24 +91,31 @@ impl Service {
// ) // )
// .ok(); // .ok();
let event_kind = RoomAccountDataEventType::Tag;
// Copy old tags to new room // Copy old tags to new room
if let Some(tag_event) = services() if let Some(tag_event) = services()
.account_data .account_data
.get( .get(
Some(&predecessor.room_id), Some(&predecessor.room_id),
user_id, user_id,
RoomAccountDataEventType::Tag, event_kind.clone(),
)? )?
.map(|event| { .map(|event| {
serde_json::from_str(event.get()).map_err(|e| { serde_json::from_str(event.get()).map_err(
warn!( |error| {
"Invalid account data event in db: \ warn!(
{e:?}" %error,
); predecessor_room_id =
Error::BadDatabase( %predecessor.room_id,
"Invalid account data event in db.", %event_kind,
) "Invalid account data event",
}) );
Error::BadDatabase(
"Invalid account data event.",
)
},
)
}) })
{ {
services() services()
@ -122,25 +129,24 @@ impl Service {
.ok(); .ok();
}; };
let event_kind = RoomAccountDataEventType::from(
GlobalAccountDataEventType::Direct.to_string(),
);
// Copy direct chat flag // Copy direct chat flag
if let Some(direct_event) = services() if let Some(direct_event) = services()
.account_data .account_data
.get( .get(None, user_id, event_kind.clone())?
None,
user_id,
GlobalAccountDataEventType::Direct
.to_string()
.into(),
)?
.map(|event| { .map(|event| {
serde_json::from_str::<DirectEvent>(event.get()) serde_json::from_str::<DirectEvent>(event.get())
.map_err(|e| { .map_err(|error| {
warn!( warn!(
"Invalid account data event in \ %error,
db: {e:?}" %event_kind,
"Invalid account data event",
); );
Error::BadDatabase( Error::BadDatabase(
"Invalid account data event in db.", "Invalid account data event.",
) )
}) })
}) })
@ -177,6 +183,10 @@ impl Service {
self.db.mark_as_joined(user_id, room_id)?; self.db.mark_as_joined(user_id, room_id)?;
} }
MembershipState::Invite => { MembershipState::Invite => {
let event_kind = RoomAccountDataEventType::from(
GlobalAccountDataEventType::IgnoredUserList.to_string(),
);
// We want to know if the sender is ignored by the receiver // We want to know if the sender is ignored by the receiver
let is_ignored = services() let is_ignored = services()
.account_data .account_data
@ -185,19 +195,19 @@ impl Service {
None, None,
// Receiver // Receiver
user_id, user_id,
GlobalAccountDataEventType::IgnoredUserList event_kind.clone(),
.to_string()
.into(),
)? )?
.map(|event| { .map(|event| {
serde_json::from_str::<IgnoredUserListEvent>( serde_json::from_str::<IgnoredUserListEvent>(
event.get(), event.get(),
) )
.map_err(|e| { .map_err(|error| {
warn!("Invalid account data event in db: {e:?}"); warn!(
Error::BadDatabase( %error,
"Invalid account data event in db.", %event_kind,
) "Invalid account data event",
);
Error::BadDatabase("Invalid account data event.")
}) })
}) })
.transpose()? .transpose()?