use super::{ event::{Deleted, Event, Sent}, Message, }; use crate::event::Instant; #[derive(Clone, Debug, Eq, PartialEq)] pub struct History { pub message: Message, pub deleted: Option, } impl History { fn sent(&self) -> Event { Event { kind: Sent { message: self.message.clone(), } .into(), } } fn deleted(&self) -> Option { self.deleted.map(|instant| Event { kind: Deleted { instant, channel: self.message.channel.clone(), message: self.message.id.clone(), } .into(), }) } pub fn events(&self) -> impl Iterator { [self.sent()].into_iter().chain(self.deleted()) } pub fn snapshot(&self) -> Message { self.message.clone() } }