use std::num::NonZeroUsize;
use matrix_sdk_common::ring_buffer::RingBuffer;
use ruma::OwnedEventId;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct LatestReadReceipt {
pub event_id: OwnedEventId,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct RoomReadReceipts {
pub num_unread: u64,
pub num_notifications: u64,
pub num_mentions: u64,
pub latest_active: Option<LatestReadReceipt>,
#[serde(default = "new_nonempty_ring_buffer")]
pub pending: RingBuffer<OwnedEventId>,
}
impl Default for RoomReadReceipts {
fn default() -> Self {
Self {
num_unread: Default::default(),
num_notifications: Default::default(),
num_mentions: Default::default(),
latest_active: Default::default(),
pending: new_nonempty_ring_buffer(),
}
}
}
fn new_nonempty_ring_buffer() -> RingBuffer<OwnedEventId> {
RingBuffer::new(NonZeroUsize::new(10).unwrap())
}