fix: cache invalidation
This commit is contained in:
parent
9d49d599f3
commit
bac13d08ae
2 changed files with 53 additions and 31 deletions
|
@ -49,10 +49,6 @@ impl Service {
|
||||||
None => continue,
|
None => continue,
|
||||||
};
|
};
|
||||||
|
|
||||||
if pdu.get("type").and_then(|val| val.as_str()) != Some("m.room.member") {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let pdu: PduEvent = match serde_json::from_str(
|
let pdu: PduEvent = match serde_json::from_str(
|
||||||
&serde_json::to_string(&pdu).expect("CanonicalJsonObj can be serialized to JSON"),
|
&serde_json::to_string(&pdu).expect("CanonicalJsonObj can be serialized to JSON"),
|
||||||
) {
|
) {
|
||||||
|
@ -60,12 +56,15 @@ impl Service {
|
||||||
Err(_) => continue,
|
Err(_) => continue,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
match pdu.kind {
|
||||||
|
TimelineEventType::RoomMember => {
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct ExtractMembership {
|
struct ExtractMembership {
|
||||||
membership: MembershipState,
|
membership: MembershipState,
|
||||||
}
|
}
|
||||||
|
|
||||||
let membership = match serde_json::from_str::<ExtractMembership>(pdu.content.get()) {
|
let membership =
|
||||||
|
match serde_json::from_str::<ExtractMembership>(pdu.content.get()) {
|
||||||
Ok(e) => e.membership,
|
Ok(e) => e.membership,
|
||||||
Err(_) => continue,
|
Err(_) => continue,
|
||||||
};
|
};
|
||||||
|
@ -89,6 +88,18 @@ impl Service {
|
||||||
false,
|
false,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
TimelineEventType::SpaceChild => {
|
||||||
|
services()
|
||||||
|
.rooms
|
||||||
|
.spaces
|
||||||
|
.roomid_spacechunk_cache
|
||||||
|
.lock()
|
||||||
|
.unwrap()
|
||||||
|
.remove(&pdu.room_id);
|
||||||
|
}
|
||||||
|
_ => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
services().rooms.state_cache.update_joined_count(room_id)?;
|
services().rooms.state_cache.update_joined_count(room_id)?;
|
||||||
|
|
||||||
|
|
|
@ -387,6 +387,17 @@ impl Service {
|
||||||
self.redact_pdu(redact_id, pdu)?;
|
self.redact_pdu(redact_id, pdu)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TimelineEventType::SpaceChild => {
|
||||||
|
if let Some(_state_key) = &pdu.state_key {
|
||||||
|
services()
|
||||||
|
.rooms
|
||||||
|
.spaces
|
||||||
|
.roomid_spacechunk_cache
|
||||||
|
.lock()
|
||||||
|
.unwrap()
|
||||||
|
.remove(&pdu.room_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
TimelineEventType::RoomMember => {
|
TimelineEventType::RoomMember => {
|
||||||
if let Some(state_key) = &pdu.state_key {
|
if let Some(state_key) = &pdu.state_key {
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue