use serde::{Deserialize, Serialize};
use crate::encode::ShouldCompress;
use crate::PeerId;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Insertion {
crdt: cola::Insertion,
text: Box<str>,
}
impl Insertion {
#[inline(always)]
pub fn crdt(&self) -> &cola::Insertion {
&self.crdt
}
#[inline(always)]
pub fn inserted_by(&self) -> PeerId {
PeerId::new(self.crdt().text().inserted_by())
}
#[inline(always)]
pub fn new(crdt: cola::Insertion, text: impl Into<Box<str>>) -> Self {
Self { crdt, text: text.into() }
}
#[inline(always)]
pub fn text(&self) -> &str {
&self.text
}
}
impl ShouldCompress for Insertion {
#[inline]
fn should_compress(&self) -> bool {
self.text.len() > 100
}
}