fix deletions on readreceipt update
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
3968d03868
commit
b94eeb9580
1 changed files with 4 additions and 6 deletions
|
@ -42,16 +42,14 @@ impl Data {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) async fn readreceipt_update(&self, user_id: &UserId, room_id: &RoomId, event: &ReceiptEvent) {
|
pub(super) async fn readreceipt_update(&self, user_id: &UserId, room_id: &RoomId, event: &ReceiptEvent) {
|
||||||
type KeyVal<'a> = (&'a RoomId, u64, &'a UserId);
|
|
||||||
|
|
||||||
// Remove old entry
|
// Remove old entry
|
||||||
let last_possible_key = (room_id, u64::MAX);
|
let last_possible_key = (room_id, u64::MAX);
|
||||||
self.readreceiptid_readreceipt
|
self.readreceiptid_readreceipt
|
||||||
.rev_keys_from(&last_possible_key)
|
.rev_keys_from_raw(&last_possible_key)
|
||||||
.ignore_err()
|
.ignore_err()
|
||||||
.ready_take_while(|(r, ..): &KeyVal<'_>| *r == room_id)
|
.ready_take_while(|key| key.starts_with(room_id.as_bytes()))
|
||||||
.ready_filter_map(|(r, c, u): KeyVal<'_>| (u == user_id).then_some((r, c, u)))
|
.ready_filter_map(|key| key.ends_with(user_id.as_bytes()).then_some(key))
|
||||||
.ready_for_each(|old: KeyVal<'_>| self.readreceiptid_readreceipt.del(old))
|
.ready_for_each(|key| self.readreceiptid_readreceipt.del(key))
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
let count = self.services.globals.next_count().unwrap();
|
let count = self.services.globals.next_count().unwrap();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue